【发布时间】:2014-09-20 15:41:22
【问题描述】:
什么是异常冒泡,我们在哪里实时使用这个概念,还有什么需要使用冒泡异常? 我对冒泡异常感到非常困惑,因为我已经浏览了许多网站,但对此没有明确的想法,而且我对差异是什么也有疑问。黑白捕捉;抓住e;
【问题讨论】:
-
我仍然怀疑我们将在哪里使用这个概念,是好是坏?
什么是异常冒泡,我们在哪里实时使用这个概念,还有什么需要使用冒泡异常? 我对冒泡异常感到非常困惑,因为我已经浏览了许多网站,但对此没有明确的想法,而且我对差异是什么也有疑问。黑白捕捉;抓住e;
【问题讨论】:
如果您没有在代码中捕获异常,它将传播给调用者。通常这绝对没问题:你应该捕获所有异常是不正确的——事实上,对异常最常见的反应是“让它继续升级”。出于这个原因,finally 在很多代码中比catch 更常见(用于资源 xleanup)——尽管using 比finally 更常见。
对于catch 与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 中,也有可能出现一些异常没有 Exceptions - 在 C++ 中你可以抛出 任何东西 - 但是,.NET 2 及更高版本通过在包装器中包装非Exception 异常来解决此问题(除非您专门禁用它)。
【讨论】: