我看到很多代码如:
try
{
// Some code
}
catch (Exception e)
{
throw;
}
为什么有人需要捕获并重新抛出异常,而catch块中没有别的东西?
答案 0 :(得分:3)
没有理由,除非您想在重新投掷之前抛出不同类型的异常或执行某些操作。
答案 1 :(得分:1)
可能需要此类代码以避免异常过滤器的奇怪影响。有关详细信息,请参阅http://www.pluralsight-training.net/community/blogs/keith/archive/2005/03/31/7149.aspx(Brian在Why catch and rethrow an exception in C#?帖子中找到的链接)。
短版本 - 可能有一些elses代码在异常抛出和catch块之间运行。因此,代码可能能够访问一些不可见的信息(例如,在文章的示例中允许在模拟上下文中运行第三方代码)。
这对于允许第三方插件的公共库和代码非常重要,通常不会引起应用程序开发人员的关注。
答案 2 :(得分:1)
我的猜测是它仅用于调试目的 - 开发人员可以在throw语句中设置断点,然后检查e中的内容。
答案 3 :(得分:0)
可能是该人想明确表示此段代码可能会抛出异常(作为一种文档),并且在将来可能希望以不同的方式处理异常,因此它们将构建现在的结构。
严格来说,它基本上什么都不做。
答案 4 :(得分:0)
通常,您会在开发过程中看到这样的结构,开发人员使用try-catch
但尚未实现catch
。
答案 5 :(得分:0)
C#提供了一种非常简单的语法 提供所需的重新抛出 语义学一直以来,但似乎没有 很多人都知道。这离开了 我很困惑,因为它本质上是 C ++使用的语法相同:空 抛出声明。