gpt4 book ai didi

C# 重新抛出异常

转载 作者:太空狗 更新时间:2023-10-29 20:53:21 25 4
gpt4 key购买 nike

在多个方法之间抛出异常时,所有方法都应该重新抛出异常吗?例如

Method1()
{
Method2();
}

Method2()
{
try
{
// Do something
}
catch
{
throw;
}
}

try
{
Method1();
}
catch
{
// Do something about exception that was thrown from Method2()
}

请注意,在 Method1() 中,我不需要将 Method2() 包装在 try block 中,我应该这样做吗?

最佳答案

您不需要将所有内容都包装在 try block 中。

只有在您想要捕获时才应该尝试,并且您应该只在以下情况下捕获:

  • 您已准备好处理异常(做任何需要做的事情,不要让它向上传播堆栈),
  • 您想在重新抛出异常之前对异常做一些处理(例如记录它)(通过使用 throw 的无参数形式),
  • 您想通过将异常包装在您自己的另一个异常中来向异常添加详细信息(请参阅下面 Allon Guralnek 的精彩评论)。

关于C# 重新抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6634011/

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