c# - 我可以用 throw 移除空捕获吗?

标签 c# .net exception-handling .net-remoting

我希望这很简单。我在一个大型代码库上工作,整体质量很好,但偶尔你会得到其中的一些:

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/

相关文章:

c# - 从 Entity Framework 中的导航属性中删除所有记录

c# - 使用 PC 上已有的 Oracle.DataAccess.DLL,不提供

.net - COM Interop 的泛型集合有哪些替代方案?

c# - 使用异常处理(可能改变)库的错误代码

c# - 读取 Active Directory ACE

c# - goto 可以跳出嵌套循环吗?

.net - 单元测试新手

.net - 我可以每 3 秒轮询一次数据库吗?

c# - 处理线程中 catch block 内抛出的异常的最佳实践。 (。网)

java - 我们能否在发生异常的try block 中获取LineNumber和ColumnNumber