是否执行了throw()和catch()之间的代码?

时间:2013-05-25 16:48:17

标签: php try-catch throw

好的,所以我是错误处理的新手,我看过一些例子,但我还没有看到这个问题的答案。我将使用一些真实的基本示例代码来显示我在问什么。

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>

3 个答案:

答案 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块。所有其他陈述都将被跳过。