in case 3 the caller hasn't called normalizeable. in case 3 he cannot just use a default value, but needs to handle the exceptional case with extra logic. Think of 2 DamageImpacts on a voxel whose damageVec sum is 0,0,0 thus not normalizable. Here one might say, "Well, I might use the cross-product of both instead" - but you don't want to calc that upfront because oin 99.999% of all cases that will not be needed.

Of course this in minimal stuff, but it helps keeping our program clean, imo.