The*_*ack 8 php boolean exception function try-catch
可能重复:
PHP:'或'语句失败:如何抛出新的异常?
在PHP中,在各种MySQL连接教程的新手中特别受欢迎,你总能做到这样的事情......
<?php
foo() or die('foo() failed!');
?>
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试这样的事情就会失败......
<?php
foo() or throw new Exception('AHH!');
?>
Run Code Online (Sandbox Code Playgroud)
像这样......
"解析错误:语法错误,意外'投'(T_THROW)......"
有谁知道怎么做类似的事情?我必须在"或"之后设置一个变量吗?
Rei*_*ica 12
做得不那么"聪明"的方式:
if(!foo()) {
throw new Exception('AHH!');
}
Run Code Online (Sandbox Code Playgroud)
如果你想知道为什么or throw new Exception()不工作,那是因为你依靠短路了的or操作:如果第一个参数是真实的,那么就没有必要评价第二,以确定是否其中之一是真实的(因为你已经知道其中至少有一个是真的).
你不能这样做,throw因为它是一个不返回布尔值(或任何值)的表达式,所以oring没有任何意义.
如果你真的想这样做,那么@emie删除的答案应该可以工作(创建一个只抛出异常的函数),因为即使是没有返回值的函数在布尔语句中也是有效的,但是这似乎是个坏主意.创建一个这样的函数,这样你就可以用布尔语句做一些聪明的事情.