【问题标题】:Exception Bubbling in .net [closed].net中的异常冒泡[关闭]
【发布时间】:2014-09-20 15:41:22
【问题描述】:

什么是异常冒泡,我们在哪里实时使用这个概念,还有什么需要使用冒泡异常? 我对冒泡异常感到非常困惑,因为我已经浏览了许多网站,但对此没有明确的想法,而且我对差异是什么也有疑问。黑白捕捉;抓住e;

【问题讨论】:

  • 我仍然怀疑我们将在哪里使用这个概念,是好是坏?

标签: c# exception


【解决方案1】:

如果您没有在代码中捕获异常,它将传播给调用者。通常这绝对没问题:你应该捕获所有异常是不正确的——事实上,对异常最常见的反应是“让它继续升级”。出于这个原因,finally 在很多代码中比catch 更常见(用于资源 xleanup)——尽管usingfinally 更常见。

对于catchcatch(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 异常来解决此问题(除非您专门禁用它)。

【讨论】:

  • 如果您有代码,请与我分享,并提供实时示例,以便我使用它
  • 请解释我仍然不清楚异常冒泡
  • @Vinod Foo() 调用 Bar(),后者调用 Blap()。 Blap 抛出异常。 Bar 不会尝试捕获异常(或捕获它并重新抛出它)-因此 Foo 获取异常。直到有人处理异常,或者它到达线程的顶部并终止进程。
猜你喜欢
  • 1970-01-01
  • 2011-05-13
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-23
  • 1970-01-01
  • 2013-01-18
相关资源
最近更新 更多