2009-09-15 54 views
4

让我们在一个方法说我有将异常传回给调用方法吗?

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

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

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

我抛出一个异常,但随后的调试器的抱怨:

说明:未处理的异常 的 当前Web请求的执行过程中发生。请查看 堆栈跟踪以了解有关 错误的更多信息,以及它源自 的代码。

只要我点击method2()的右括号。

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

+2

他们是如果你不处理他们(或吞下他们如你的例子) – BlackTigerX 2009-09-15 23:13:06

回答

10

在运行时,异常会泡了调用堆栈,直到发生以下情况之一:

  • 这是陷入了一个两难块
  • 它是由一个全球性的异常处理程序捕获
  • 它没有被用户代码捕获并且显示一般异常消息

当调试情况有些不同时,因为调试器可以设置为在未处理的用户中断ptions。这可能是你的情况发生了什么。检查Visual Studio选项Debug/Exceptions以查看您的调试器是否设置为在任何未处理的异常在用户代码冒出和冒出之前捕获。

相关问题