这是我的代码:
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;
)
解析错误:语法错误,意外&#39 ;;'在{path}
答案 0 :(得分:7)
message
参数在Exception
构造函数中是可选的。所以如果你没有/想要放 - 只是不要:
throw new Exception;
但你仍然必须抛出Exception
类的实例(或扩展它的类),因为它是php语言语法的一部分。
答案 1 :(得分:3)
如果您希望所有例外都有相同的消息,您可以扩展它并在班级中定义消息:
class AmbiguousException extends Exception {
public function __construct($message = 'Something is wrong.', $code = 0, Exception $previous = null) {
parent::__construct($message, $code, $previous);
}
}
然后:
throw new AmbiguousException();
答案 2 :(得分:1)
如PHP manual中所述:
抛出的对象必须是Exception类的实例或Exception的子类。尝试抛出一个不会导致PHP致命错误的对象。
您可以在没有任何消息的情况下抛出异常:
throw new Exception();
也许可以帮助您复制相同异常的内容如下:
$e = new Exception('something is wrong');
try {
throw $e;
} catch (Exception $ex) {
echo $ex->getMessage();
}
答案 3 :(得分:1)
您可以在每次需要时使用以下投掷。
throw new Exception();
和catch将与您的代码保持一致。
答案 4 :(得分:1)
您可以使用默认消息创建实例,然后抛出该实例。
$Exception = new Exception("some error message!");
try {
throw $Exception;
} catch (Exception $ex) {
var_dump($ex);
}
答案 5 :(得分:0)
您无法单独使用throw
关键字。但是,您可以使用throw new Exception();
而不指定$message
参数,因为它只会回退到默认消息。查看PHP手册中的例外部分:http://php.net/manual/en/language.exceptions.extending.php