有没有一种静态的方式来在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

链接地址: http://www.djcxy.com/p/26607.html

上一篇: Is there a static way to throw exception in php

下一篇: catch blocks: are they able to catch invalid arg types?