内置的.NET异常指示非法对象状态?

如果遇到非法状态,应该抛出什么异常-例如,初始化方法只应被调用一次才能被调用? 我真的看不到任何有意义的内置异常。 这似乎应该放在框架中-我不是在正确的地方戳吗?

Chris Marasti-Georg asked 2019-11-18T13:24:59Z
3个解决方案
69 votes

InvalidOperationException也许?

当方法调用对于对象的当前状态无效时引发的异常。

Michael Stum answered 2019-11-18T13:25:32Z
0 votes

通常,您应该以无法达到无效状态的方式对对象进行编程。 如果发现对象处于无效状态,则应抛出ToString或直接从SystemException派生的异常。这是标题中问题的答案。

但是,问题文本中所指的特殊情况是对象的用户将其推向非法状态。 在这种情况下,如早先的答案所示,正确抛出异常是ToString。 这样可以避免您的对象进入非法状态。

不用说,您需要记录如何使用对象。 如果您的对象的预期寿命很长,或者在不同对象之间使用/共享对象,那么用户可以请求当前状态,并实现ToString以文本形式获取当前状态(例如,在 调试环境/日志。

Maarten Bodewes answered 2019-11-18T13:26:19Z
-3 votes

如果我要说System.InvalidProgramException变得最接近您想要的。 引发自定义异常怎么了?

Markus Nigbur answered 2019-11-18T13:26:43Z
translate from https://stackoverflow.com:/questions/259800/is-there-a-built-in-net-exception-that-indicates-an-illegal-object-state