有没有一种静态的方式来在PHP中抛出异常
有没有在PHP中抛出异常的“静态”方式?
当mysql查询失败时,我需要抛出异常。
我试过这个:
$re=@mysql_query( $query ) or throw new Exception(' Query Failed ');
但它不起作用。
我在PHP:Exceptions手册中使用了一个基于throwException()
函数的函数,但是我想知道是否有静态的方法来做这个,而不需要创建一个类。
您将无法直接执行or throw new Exception();
因为throw
是一个陈述,而不是一个表达。 既然or
真的是一个运算符,它期望它的操作数是表达式(对某些值进行求值的东西)。
你必须这样做:
$re = mysql_query($query);
if (!$re) {
throw new Exception('Query Failed');
}
如果您试图使用该PHP手册评论提出的throwException throwException()
函数,因为webbiedave指出该评论意味着您需要直接调用该函数而不是throw
语句,如下所示:
$re = mysql_query($query) or throwException('Query Failed');
PHP中没有规定您需要从类方法中抛出异常。 只要有一些方法可以捕捉到这种异常情况,你就很好。 如果你的意思是你想在不使用Exception
类的情况下抛出异常,那么你必须。 例外是天生的对象; 你不能抛出一个不是对象的异常(或者不能从Exception
类继承)。
如果您不想抛出异常,但会引发您经常从PHP(通知,警告和致命错误)中看到的错误,请使用trigger_error()
。
$re = mysql_query($query);
if (!$re) {
trigger_error('Query Failed', E_USER_ERROR);
}
您链接到的评论以这种方式抛出异常是行不通的。 它声明你必须把它放在一个函数中:
function throwException($message = null, $code = null) {
throw new Exception($message, $code);
}
$re = mysql_query($query) or throwException('Query Failed');
你也可以尝试类似的东西
mysql_query($query);
if (mysql_error()) {
throw new Exception(...);
}
因为如果没有错误,则mysql_error()
返回空字符串,其计算结果为false
。
上一篇: Is there a static way to throw exception in php
下一篇: catch blocks: are they able to catch invalid arg types?