我在PHP中有一个函数启动一个异常,代码在该异常之后永远不会执行,尽管抛出或不抛出异常。
if ($a == 1) throw new Exception("Message");
echo "Dose not execute for $a == 0";
我知道当一个异常发生后,代码将无法到达,但在我的例子中$a == 0
没有抛出异常,但是甚至没有echo
被执行。
非常感谢,我希望有人可以通过我的方式找出我的PHP发生了什么。
答案 0 :(得分:5)
按定义抛出异常会结束当前运行(函数,方法等)。如果您不想要这种行为,请不要抛出异常。
此外,您不需要在抛出异常后回显错误,只需包含异常的错误。
答案 1 :(得分:1)
如果你正在向这样的'$ a'点'0',$a == 0,
当然不起作用,因为你没有分配值,而是检查是否相等(不严格);
此代码:
$a = 0;
if ($a == 1) throw new Exception("Message");
echo "Dose not execute for $a == 0";
<强>工作原理即可。 I.E.,echo
起作用(“剂量不执行0 == 0”),因为$a != 1.
并且没有抛出异常。
您应该使用单引号来显示消息(错误的原样),例如“Dose not for for a a = = 0”,因为使用双引号时,变量在字符串中是替换的。
此代码:
$a = 1;
if ($a == 1) throw new Exception("Message");
echo "Dose not execute for $a == 0";
抛出异常,这会停止脚本的运行并且不会执行回显。所以,它有效。
像你这样的代码,
$a == 0;
if ($a == 1) throw new Exception("Message");
echo "Dose not execute for $a == 0";
只需就会返回未定义的变量错误,因为未定义$ a。最有可能的是,您没有启用/显示错误,因此无法查看任何内容。
答案 2 :(得分:0)
您的PHP版本或Apache / Nginx可能存在问题。 使用方括号确定发生了什么,并使代码更清晰。 并且也使用3等于,因为1和0可以与true或false混淆
if ($a === 1) {
echo "Does NOT execute for $a = 0";
throw new Exception("Message");
}
echo "Does execute for $a = 0";