Why not throw in this case?  I generally prefer stricter programming models because I find them easier to reason about when debugging, and they can't be made stricter later without risking breakage.