将异常传递回调用方法吗?

时间:2009-09-15 23:11:04

标签: c# .net exception exception-handling

让我们用一种方法说

try {
callme();
}
catch
{
// handle callme exception
}

现在让我们说callme()调用method1(),然后调用method2() - 如果method2()抛出一个异常,它应该被抛回到method1()的框架,然后它将停止在自身内部的任何进一步执行,并将从method2()抛出的异常传递给callme()的框架并返回到原始的堆栈框架?

如果我单步执行代码会发生同样的情况吗?或者,如果在原始方法中没有处理VS2008,它会在看到异常后立即停止吗?

我正在抛出异常,但调试器抱怨:

  

描述:未处理的异常   在执行期间发生   当前的网络请求。请查看   堆栈跟踪以获取更多信息   错误及其来源   代码。

一旦我点击method2()的结束括号。

我有点困惑,我认为异常应该一直传回来。

1 个答案:

答案 0 :(得分:10)

在运行时,异常会冒出调用堆栈,直到出现以下情况之一:

  • 它被捕获在Catch块
  • 它被全局异常处理程序
  • 捕获
  • 未被用户代码捕获并显示常规异常消息

调试情况稍有不同,因为可以将调试器设置为中断未处理的用户异常。这可能就是你的情况。检查Visual Studio选项Debug / Exceptions以查看您的调试器是否设置为在它冒泡并且没有用户代码之前捕获任何未处理的异常。