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