php中抛出异常后的代码未执行

php中抛出异常后的代码未执行,php,exception,Php,Exception,我在PHP中有一个启动异常的函数,不管异常是否抛出,该异常之后的代码永远不会执行 if ($a == 1) throw new Exception("Message"); echo "Dose not execute for $a == 0"; 我知道,当异常发生时,之后的代码将不会到达,但在我的示例中,当$a==0时,不会引发异常,但即使echo也不会执行 好的,谢谢,我希望有人能知道我的PHP是怎么回事,顺便说一下,它是5.3。根据定义抛出异常将结束当前运行(函数、方法等)。如果不希望出现

我在PHP中有一个启动异常的函数,不管异常是否抛出,该异常之后的代码永远不会执行

if ($a == 1) throw new Exception("Message");
echo "Dose not execute for $a == 0";
我知道,当异常发生时,之后的代码将不会到达,但在我的示例中,当
$a==0
时,不会引发异常,但即使
echo
也不会执行


好的,谢谢,我希望有人能知道我的PHP是怎么回事,顺便说一下,它是5.3。

根据定义抛出异常将结束当前运行(函数、方法等)。如果不希望出现这种行为,请不要抛出异常


另外,在抛出异常后,您不需要回显错误,只需将错误包含在异常中。

如果您像这样将“0”分配给“$a”,那么,
$a==0,
当然不起作用,因为您不是在赋值,而是在检查相等性(不严格)

此代码:

$a = 0;
if ($a == 1) throw new Exception("Message");
echo "Dose not execute for $a == 0";
有效。也就是说,
echo
工作(“0==0时不执行”),因为
$a!=1.
并且不会引发异常。 您应该使用单引号来包含类似“Dose not execute for$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未定义。最有可能的是,您没有启用/显示错误,因此无法看到任何内容。

这可能是您的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";

我建议的第一件事是始终使用大括号。