如果函数中间有throw
语句,该函数是否在此时终止?
答案 0 :(得分:14)
是的,除了任何finally
块,或者函数中有一个异常处理程序可以捕获你正在抛出的异常类型。
答案 1 :(得分:6)
控制传递给调用堆栈中的下一个异常处理程序(catch
块),无论是在当前方法中还是在其父项之一中。如果throw
未封装在try / catch块中,则在寻找父catch块之前执行任何finally
块。
答案 2 :(得分:1)
我想正确的答案是,这取决于。如果你因为任何奇怪的原因用try / catch包裹投掷,那么没有。如果你没有,那么是的,除非你没有在调用堆栈的某个地方捕获异常,在这种情况下你的整个应用程序都会崩溃。
答案 3 :(得分:1)
是的,除非你抓住它或者有一个finally块:
try {
var foo = 42 /0;
}
finally
{
// This will execute after the exception has been thrown
}
答案 4 :(得分:0)
确实如此。它会生成一个异常,它会调用堆栈。
答案 5 :(得分:0)
是。它将转到最近的catch
块。
答案 6 :(得分:0)
异常是在不应该发生的情况下发生的事件,因此应用程序不知道如何处理此类事件。在所有OOP语言中(我所知道的),运行时所做的是暂停调用事件的函数,然后将异常抛出堆栈,直到有人知道如何处理它。这就是try / catch块的用武之地。