我希望这很简单。我在一个大型代码库上工作,整体质量很好,但偶尔你会得到其中的一些:
try
{
// Calls a .NET remoting method.
}
catch
{
throw;
}
请注意,没有 finally 逻辑,并且 catch 没有指定任何异常,也没有做我上面提供的以外的任何事情。但是,我知道捕获和重新抛出可以改变异常详细信息中的调用堆栈。我不确定的是,此行为是否是专门因为 .NET 远程调用而出现的。
删除这个 try-catch 是否安全?据我所知,是的,但我想我会先仔细检查是否有任何奇怪的行为。
最佳答案
重新抛出正如您展示的那样 不应该改变调用堆栈,除非有一些关于远程处理异常的非常特殊的东西。 (我知道有一些特殊的方面,但我不认为它们在这里发挥作用。)这是确实丢失信息的事情:
catch(Exception e)
{
throw e; // Not throw;
}
我的猜测是某些开发人员包含此内容只是为了在throw
行上放置一个断点。我会摆脱它。
关于c# - 我可以用 throw 移除空捕获吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6517699/