<?php
function some_function($arg) {
if($filter->check_for_safe_input($arg)) {
throw new Exception("Hacking Attempt");
}
do_some_database_stuff($arg);
}
?>
Run Code Online (Sandbox Code Playgroud)
在上面的代码示例中,do_some_database_stuff如果check_for_safe_input失败,是否会被调用,或者异常是否会停止运行的函数?这是我从未完全确定的事情,通常我只是do_some_database_stuff在else语句中粘贴函数以确定,但这往往导致巨大的嵌套函数.
sve*_*ens 13
看一下关于异常的PHP手册.
抛出异常时,不会执行语句后面的代码,PHP将尝试查找第一个匹配的catch块.如果未捕获异常,则将发出带有"Uncaught Exception ..."消息的PHP致命错误,除非已使用set_exception_handler()定义了处理程序.
所以,是的,函数的其余部分没有被执行,而是发生了fata错误.
如果捕获异常,脚本的执行将在相应的catch块中继续执行,抛出异常的函数和catch块之间的所有内容都不会执行.
| 归档时间: |
|
| 查看次数: |
21630 次 |
| 最近记录: |