好的,所以我是错误处理的新手,我看过一些例子,但我还没有看到这个问题的答案。我将使用一些真实的基本示例代码来显示我在问什么。
if(some condition){
throw Exception()
}
//Some random code in between
echo "Code between throw() and Catch()";
catch(Exception $e){
//handle the caught exception
}
所以基本上,我的问题是 - 如果if()中的条件导致抛出异常,是否会执行随机echo语句,还是会跳过并直接进入异常的catch()? / p>
答案 0 :(得分:5)
来自the manual:
当抛出异常时,语句后面的代码将不会被执行,PHP将尝试查找第一个匹配的catch块
答案 1 :(得分:4)
答案是否定,
示例:
<?php try{
$conn = new PDO('mysql:host=localhost; dbname=xxx', 'xxx', '');
?>
...我只是一个HTML文本。 ...
<?php
}catch(PDOException $e){
echo 'ERROR: '.$e->getMessage();
}
这是因为,一旦try指令失败,它将很快跳转到捕获该错误,并显示错误。所以,你无法看到/评估中间的任何东西。
答案 2 :(得分:0)
一旦确定并执行了throw,那么控件将被移动到catch块。所有其他陈述都将被跳过。