.net中的异常冒泡

时间:2014-09-20 15:41:22

标签: c# exception

什么是异常冒泡,实时我们使用这个概念,还有什么需要使用冒泡异常? 我非常混淆冒泡的例外为什么因为我经历了很多网站没有给出明确的想法,而且我对差异有什么疑问。 b / w Catch;抓住e;

1 个答案:

答案 0 :(得分:3)

如果您没有在代码中捕获异常,它将传播给调用者。通常这是绝对正常的:你应该捕获所有异常是不正确的 - 实际上,对异常的最常见反应是#34;让它不断升级"。出于这个原因,finally更常见于catch在很多代码中(对于资源xleanup) - 尽管usingfinally更常见。

至于catch vs catch(Exception e) - 第二种形式捕获一组特定的异常类型(在本例中为Exception和任何子类),并提供对异常的访问以进行检查。这可能是因为您要检查异常的特定属性(例如,SQL错误代码),或者因为您希望使用原始异常作为InnerException来引发自定义异常。例如:

catch(AwesomeException e) {
    if(e.Something)
        throw new CrazyException(" oops", e);
    throw; // else rethrow the original
}

请注意,在.NET 1.1中,某些例外也可能不是 Exception - 在C ++中你可以抛出任何 - 但是,.NET 2及更高版本通过在包装器中包装非Exception异常来解决此问题(除非您专门禁用它)。