PHP异常无法正常引发

时间:2014-09-17 17:15:32

标签: php

我是PHP异常的新手。当我尝试类似

的代码时
<?php

if ($number != 0) {
    throw new Exception('number not equal to 0');
}
return true;

try {
$number = 0;
} catch (Exception $e) {
echo 'Caught exception: ',  $e->getMessage(), "\n";

}

我得到一个空白屏幕,没有异常被提出。

2 个答案:

答案 0 :(得分:2)

就像任何(广泛使用的)编程语言一样,PHP从上到下读取您的代码(有一些例外情况,但出于这个问题的目的,解释它们是没用的。)

因此,当您的脚本开始时,它会将$number0进行比较。由于您尚未设置它,因此它的计算结果等同于0,并且不会抛出异常。然后它运行return true; when called in the global scope, ends the execution of the current script,并且不再传递任何代码。

即使没有return语句,如果脚本继续进入下一个块,也不会引发异常,因为您的语句字面意思是try$number设置为{{1}这不应该失败。

您有多种选择,包括将代码封装在0块中,或采用与其示例中给出的function类似的解决方案(在@donald123块中抛出异常)。

答案 1 :(得分:0)

请阅读www.php.net上的手册:

 <?php 
    $number = 0; // Set the Value
    try {
         if($number != 0) throw new Exception('number not equal to 0',E_ERROR);
         echo "Number gt 0";
    } catch (Exception $e) {
         echo 'Caught exception: ',  $e->getMessage(), "\n";

    }
    // CONTINUE
  ?>