Rethrowing exception
本文关键字:exception Rethrowing | 更新日期: 2023-09-27 17:49:55
我看到很多这样的代码:
try
{
// Some code
}
catch (Exception e)
{
throw;
}
为什么有人需要在catch块中没有其他内容的情况下捕获并重新抛出异常?
没有原因,除非您想要抛出不同类型的异常或在重新抛出之前执行一些操作。
可能需要这样的代码来避免异常过滤器的奇怪效果。有关详细信息,请参阅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