我是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";
}
我得到一个空白屏幕,没有异常被提出。
答案 0 :(得分:2)
就像任何(广泛使用的)编程语言一样,PHP从上到下读取您的代码(有一些例外情况,但出于这个问题的目的,解释它们是没用的。)
因此,当您的脚本开始时,它会将$number
与0
进行比较。由于您尚未设置它,因此它的计算结果等同于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
?>