gpt4 book ai didi

c# - 抛出可忽略的异常

转载 作者:行者123 更新时间:2023-12-02 19:26:45 26 4
gpt4 key购买 nike

如何抛出一个如果不处理就可以忽略的异常?

假设我想确保参数不为空,例如

if (param == null)
{
throw new ArgumentException("Param is null!");
// if the exception isn't handled in the calling code, just return
}

如果碰巧传递了一个空参数,我不想弄乱调用该方法的代码。但是,我仍然想抛出异常,以防使用它的人处理异常。

我考虑过以某种方式使用“重新抛出”,但我认为这行不通。

使用契约(Contract)之类的东西可以更好地做到这一点吗?

最佳答案

有两种方法可以处理您想做的事情:

  • 不要抛出异常。相反,只需返回即可,不会产生任何副作用。当然,这可能无法做到,具体取决于您的方法的目的。

  • 抛出异常,但也要在文档中明确说明:

    • 抛出什么异常
    • 为什么它们被抛出

    然后由调用者决定是处理异常还是让它冒泡。

请注意,如果您抛出异常并且没有人处理它,那么调用您的代码的任何内容都会崩溃。这可能被认为是一个重大变化,并且可能不是一个受欢迎的行为变化。

一般经验法则是您应该只抛出异常:

  • 当重要的时候(即,传达错误状态或后果很重要)
  • 当您改变状态或结果或为其增加值(value)时

如果空参数值确实很重要,因为没有它就无法运行,那么异常也很重要,调用者不应该忽略它。如果 null 参数无关紧要,那么不要抛出异常,而应该返回一个有效的 null/空/中性响应。

关于c# - 抛出可忽略的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30657463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com