php:Exception和RuntimeException之间的区别?

sen*_*rio 18 php exception-handling

php \Exception\RuntimeExceptionphp 之间的确切语义差异是什么?
什么时候应该使用前者而后者呢?

mal*_*200 21

异常是PHP中所有异常的基类(包括RuntimeException).正如文件所说:

如果只能在运行时发现错误,则抛出RuntimeException.

这意味着每当你期望通常应该工作的东西时,就会出错:例如:除零或数组索引超出范围等.你可以抛出RuntimeException.

至于Exception,这是一个非常通用的例外,我称之为"最后的手段".您可以在"尝试"中将其添加为最后一个,以确保您正在处理所有异常.

例:

try {
    //code...
} catch(RuntimeException $e) {
    echo ("RuntimeException..."); 
} catch(Exception $e) {
    echo ("Error something went wrong!"); 
    var_dump($e); 
}
Run Code Online (Sandbox Code Playgroud)

希望现在是清楚:)

  • 问题是关于语义的。“通常应该起作用的东西,会出错”并不足以解释,因为你可以用同样的方式解释“异常”。 (2认同)

Mat*_*iak 5

这两者之间的唯一区别是语义。在\RuntimeException继承\Exception。其他基本没有区别。

您可以创建自己的异常继承自上述两者,最常见的用法是从\Exception.