C# 为什么要抛出异常而不是让代码抛出它?
我希望调用函数的代码能够处理函数中引发的任何异常。如果我写:C# 为什么要抛出异常而不是让代码抛出它?,c#,exception,C#,Exception,我希望调用函数的代码能够处理函数中引发的任何异常。如果我写: try { // Code than may raise an exception } catch { throw; } 异常将与调用堆栈一起传回。我可以改为写下面的内容并得到相同的结果吗?在这种情况下,是否有任何理由使用try
try
{
// Code than may raise an exception
}
catch
{
throw;
}
异常将与调用堆栈一起传回。我可以改为写下面的内容并得到相同的结果吗?在这种情况下,是否有任何理由使用try catch
// Code that may raise an exception
在您介绍的场景中,捕获然后重试异常的唯一原因是您正在捕获块中执行其他操作,如日志记录或清理。否则,这完全是禁止的
顺便说一句,如果您确实需要此构造,那么您使用的是
throw
,而不是throw e
,这对您很好。前者保留调用堆栈;后者没有。在这种情况下,没有理由使用try/catch
如果您正在记录任何信息或将异常封装在更高级别的异常中,则会显示try/catch