gpt4 book ai didi

c# - try catch 并重新抛出异常

转载 作者:太空宇宙 更新时间:2023-11-03 17:12:18 24 4
gpt4 key购买 nike

前几天我在我们的一个项目中看到一些代码使用 try catch 并像这样重新抛出捕获的异常:

try
{
exceptionProneCode();
}
catch(Exception ex)
{
throw ex;
}

除 catch block 中的异常外,没有其他任何事情发生,所以我什至不确定为什么它会被重新抛出。我看不到实际再次抛出相同异常并且对异常不执行任何操作有任何好处。

如果您重新抛出在 catch block 中捕获的异常,C# 将如何处理?它会陷入无限的抛/接循环吗?还是它最终会离开 try catch?

最佳答案

考虑这两个模型:

1- 通过重新抛出 ex:

catch(Exception ex)
{
throw ex;
}

你丢失了 StackTrace。如果 exception 记录在某处,则包含调用堆栈的即时帧(方法调用历史记录)的 StackTrace 将丢失。

2- 对比throw:

catch(Exception ex)
{
// do something here
throw;
}

您维护 StackTrace。您可以进行额外的处理,然后在不丢失跟踪字符串的情况下重新抛出 exception

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

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