<?php
function some_function($arg) {
if($filter->check_for_safe_input($arg)) {
throw new Exception("Hacking Attempt");
}
do_some_database_stuff($arg);
}
?>
在上面的代码示例中,如果do_some_database_stuff
失败,是否会调用check_for_safe_input
,或者异常是否会停止正在运行的函数?这是我从未完全确定的事情,通常我只是在else语句中使用do_some_database_stuff
这样的函数来确定,但这往往会导致嵌套函数的大量嵌入。
答案 0 :(得分:44)
是的,未捕获的异常会导致致命错误,从而停止执行脚本。因此,如果抛出异常,则不会调用do_some_database_stuff
函数。您可以在this article中了解有关例外的更多信息。
答案 1 :(得分:11)
查看有关异常的PHP手册。
抛出异常时,代码 以下声明不会 执行,PHP将尝试查找 第一个匹配的catch块。如果 异常未被捕获,PHP致命 错误将以“未捕获”发出 例外......“消息,除非a 处理程序已定义为 set_exception_handler()。
所以是的,函数的其余部分没有被执行,而是发生了fata错误 如果捕获异常,脚本的执行将在相应的catch块中继续,抛出异常的函数和catch块之间的所有内容都不会执行。
答案 2 :(得分:2)
异常(如果没有捕获)将结束脚本执行。