Php 我可以在没有任何信息的情况下使用throw吗?

Php 我可以在没有任何信息的情况下使用throw吗?,php,exception-handling,try-catch,Php,Exception Handling,Try Catch,这是我的密码: try { if ( condition 1 ) { throw; } else { // do something } // some code here if ( condition 2 ){ throw; } } catch (Exception $e) { echo "something is wrong"; } 如您所见,mycatch块有自己的错误消息,该

这是我的密码:

try {

    if ( condition 1 ) {
        throw;
    } else {
        // do something
    }

    // some code here

    if ( condition 2 ){
        throw;
    }

} catch (Exception $e) {
    echo "something is wrong";
}
如您所见,my
catch
块有自己的错误消息,该消息是一个常量。所以当我像这样使用
throw
时,我真的不需要传递消息:

throw new Exception('error message');
我可以不用任何东西就使用
throw
?我只需要跳入
catch

诚实地写一条毫无用处的错误消息对我来说很烦人


正如您所知,我当前的代码有一个语法错误:(它指的是
throw;

分析错误:语法错误,意外“;”在{path}中


消息
参数在
异常
构造函数中是可选的。因此,如果你没有/不想放,就不要:

throw new Exception;
但是您仍然必须抛出
异常
类(或扩展它的类)的实例,因为它是php语言语法的一部分。

如中所述:

抛出的对象必须是Exception类的实例或Exception的子类。尝试抛出一个不是的对象将导致PHP致命错误

您可以在不显示任何消息的情况下引发异常:

throw new Exception();
也许可以通过以下方式帮助您避免重复相同的异常:

$e = new Exception('something is wrong');

try {
    throw $e;
} catch (Exception $ex) {
    echo $ex->getMessage();
}

你可以随时使用下面的投掷

throw new Exception();

而catch将保持与代码相同

您不能单独使用
throw
关键字。但是,您可以使用
抛出新异常()$message
参数,因为它将返回默认消息。查看PHP手册中的异常部分:

如果希望所有异常都具有相同的消息,可以扩展它并在类中定义消息:

class AmbiguousException extends Exception {
    public function __construct($message = 'Something is wrong.', $code = 0, Exception $previous = null) {
       parent::__construct($message, $code, $previous);
    } 
}
然后:


您可以使用默认消息创建一个实例,然后抛出该实例

$Exception = new Exception("some error message!");
try {
    throw $Exception;
} catch (Exception $ex) {
    var_dump($ex);
}

您需要抛出
异常
类的实例。如果没有消息-不要编写它:
抛出新异常()
@Marty正如我所说,这个错误
有些地方出了问题
对于所有的
抛出
都是固定的。。那我为什么要写几遍?!!例外情况应该提供有用的信息。当你回来使用这个应用程序时,你会想在脸上打一拳,并且不断地看到极其模糊的“有什么不对劲了”。@zerkms Emm不知道你的意思。。你能写一个答案吗?我的意思是:如果你没有把一条消息放到异常构造函数中,就不要:
thrownewexception()哈。。仅为一条错误消息编写类。。有趣的Thx+1@Shafizadeh我认为你低估了例外情况。它们提供了一个完整的strack跟踪,因此您可以实际看到提供错误的方法调用链。它们不是简单的信息。正如@zerkms在他的回答中提到的,你也可以省略
()
。无论如何,thx+1是的,相信我,在问我的问题之前,我已经查阅了手册
;-)。。!谢谢你的回答。
$Exception = new Exception("some error message!");
try {
    throw $Exception;
} catch (Exception $ex) {
    var_dump($ex);
}