如果不处理,如何抛出可以忽略的异常?
说我想确保一个参数不是null,比如
if (param == null)
{
throw new ArgumentException("Param is null!");
// if the exception isn't handled in the calling code, just return
}
如果碰巧传递了null参数,我不想搞乱调用该方法的代码。但是,我仍然想抛出异常,以防无论谁使用它都会处理异常。
我想过以某种方式使用“重新抛出”,但我认为这不会起作用。
用合同之类的东西可以做得更好吗?
答案 0 :(得分:5)
有两种方法可以处理您想要做的事情:
不要抛出异常。而只是返回而不会产生任何副作用。当然,这可能无法做到,具体取决于您的方法的用途。
抛出异常,但也在文档中明确说明:
然后由调用者决定是否处理异常或让它冒出来。
请注意,如果抛出异常并且没有人处理它,那么调用代码的任何内容都会崩溃。这可能被认为是一个突破性的变化,可能不是一个受欢迎的行为改变。
一般的经验法则是你应该只抛出异常:
如果null参数值确实很重要,因为没有它就无法运行,那么异常也很重要,调用者不应该忽略它。如果null参数不重要,那么不要抛出异常,而应该返回一个有效的null / empty / neutral响应。