Rethrowing exception

本文关键字:exception Rethrowing | 更新日期: 2023-09-27 17:49:55

我看到很多这样的代码:

try
{
    // Some code
}
catch (Exception e)
{
    throw;
}

为什么有人需要在catch块中没有其他内容的情况下捕获并重新抛出异常?

Rethrowing exception

没有原因,除非您想要抛出不同类型的异常或在重新抛出之前执行一些操作。

可能需要这样的代码来避免异常过滤器的奇怪效果。有关详细信息,请参阅http://www.pluralsight-training.net/community/blogs/keith/archive/2005/03/31/7149.aspx(链接由Brian在为什么在c#中捕获和重新抛出异常?线程).

简短版本-在抛出异常和catch块之间可能会有其他人的代码运行。因此,代码可能能够访问一些不打算显示的信息(例如,在本文的示例中允许在模拟的上下文中运行第三方代码)。

这对于公共库和允许第三方插件的代码来说很重要,通常对于应用程序开发人员来说不是一个问题。

我猜这只是为了调试——开发人员可以在throw语句上设置一个断点,然后检查e中的内容。

可能有人想要显式地表示这段代码可能抛出异常(作为一种文档),并且将来可能希望以不同的方式处理异常,因此他们现在将构建该结构。

严格来说,它实际上什么也不做。

通常您会在开发过程中看到这样的结构,其中开发人员正在使用try-catch,但尚未实现catch

c#提供了一个非常简单的语法提供所需的重扔一直都是语义,但似乎不是很多人都知道。这使得我很困惑,因为它本质上是与c++使用的语法相同:空把语句。
http://winterdom.com/2002/09/rethrowingexceptionsinc