PHP异常是否会停止执行?

时间:2010-02-20 12:24:36

标签: php exception

<?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这样的函数来确定,但这往往会导致嵌套函数的大量嵌入。

3 个答案:

答案 0 :(得分:44)

是的,未捕获的异常会导致致命错误,从而停止执行脚本。因此,如果抛出异常,则不会调用do_some_database_stuff函数。您可以在this article中了解有关例外的更多信息。

答案 1 :(得分:11)

查看有关异常的PHP手册。

  

抛出异常时,代码   以下声明不会   执行,PHP将尝试查找   第一个匹配的catch块。如果   异常未被捕获,PHP致命   错误将以“未捕获”发出   例外......“消息,除非a   处理程序已定义为   set_exception_handler()。

http://ch.php.net/exceptions

所以是的,函数的其余部分没有被执行,而是发生了fata错误 如果捕获异常,脚本的执行将在相应的catch块中继续,抛出异常的函数和catch块之间的所有内容都不会执行。

答案 2 :(得分:2)

异常(如果没有捕获)将结束脚本执行。

请参阅PHP manual chapter on Exceptions