10

如果throw函数中间有语句,函数是否在此时终止?

4

7 回答 7

15

是的,除了任何finally块,或者函数中有一个异常处理程序可以捕获您抛出的异常类型。

于 2011-03-02T07:19:08.020 回答
7

控制传递到catch调用堆栈中的下一个异常处理程序(块),无论是在当前方法中还是在其父方法中。如果throw未封装在 try/catch 块中,finally则在寻找父 catch 块之前执行任何块。

于 2011-03-02T07:20:47.407 回答
1

你试过了吗?:)

我想正确的答案是,这取决于。如果你出于某种奇怪的原因用 try/catch 包裹了投掷,那么不会。如果你没有,那么是的,除非你没有在调用堆栈的某处捕获异常,在这种情况下你的整个应用程序会崩溃。

于 2011-03-02T07:19:33.557 回答
1

是的,除非你抓住它或有一个 finally 块:

try {
   var foo = 42 /0;
}
finally
{
  // This will execute after the exception has been thrown
}
于 2011-03-02T07:20:12.540 回答
0

确实如此,是的。它会生成一个异常,该异常会上升到调用堆栈。

于 2011-03-02T07:18:57.177 回答
0

是的。它将前往最近的catch街区。

于 2011-03-02T07:19:10.540 回答
0

异常是在不应该发生的情况下发生的事件,因此应用程序不知道如何处理此类事件。在所有 OOP 语言(我所知道的)中,运行时所做的是停止调用事件的函数,然后将异常抛出堆栈,直到有人知道如何处理它。这就是 try / catch 块的用武之地。

于 2011-03-02T07:25:17.470 回答