The thing is that when you're designing the abstraction, before it exists, when you're bringing it to life, in its creation process, you might be working on it under the top level,

I see!

and it's annoying to have the object not created.
IMO, there is no reason why an object should refuse to create if you pass bad values for *optional* creation arguments. It's enough to just post an error message, just like when you pass bad values to the corresponding method.