这是我的代码:
try {
    if ( condition 1 ) {
        throw;
    } else {
        // do something
    }
    // some code here
    if ( condition 2 ){
        throw;
    }
} catch (Exception $e) {
    echo "something is wrong";
}正如您所看到的,我的catch块有它自己的错误消息,并且该消息是一个常量。因此,实际上,当我像这样使用throw时,我不需要传递消息:
throw new Exception('error message');我可以不用任何东西使用throw吗?我只需要跳进catch块。
老实说,编写一个无用的错误消息对我来说很烦人。
如您所知,我当前的代码有一个语法错误:(它指的是throw;__)
分析错误:{path}中的语法错误,意外';‘
发布于 2016-07-13 04:07:37
message参数在Exception构造函数中是可选的。所以如果你不想放-就不要:
throw new Exception;但是仍然必须抛出Exception类的实例(或扩展它的类),因为它是php语言语法的一部分。
发布于 2016-07-13 04:08:32
如果希望所有异常都具有相同的消息,则可以扩展它并在类中定义该消息:
class AmbiguousException extends Exception {
    public function __construct($message = 'Something is wrong.', $code = 0, Exception $previous = null) {
       parent::__construct($message, $code, $previous);
    } 
}然后:
throw new AmbiguousException();发布于 2016-07-13 04:07:47
如PHP手册所述
抛出的对象必须是异常类的实例或异常的子类。尝试抛出一个不是的对象将导致PHP致命错误。
您可以在没有任何消息的情况下抛出异常:
throw new Exception();也许可以帮助您避免重复相同的例外情况,如下所示:
$e = new Exception('something is wrong');
try {
    throw $e;
} catch (Exception $ex) {
    echo $ex->getMessage();
}https://stackoverflow.com/questions/38342457
复制相似问题