Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP脚本执行中的错误转换为异常_Php_Oop - Fatal编程技术网

将PHP脚本执行中的错误转换为异常

将PHP脚本执行中的错误转换为异常,php,oop,Php,Oop,我听说将所有错误转换为异常是一种很好的做法。我完全同意这一点,这个解决方案的许多优点之一是我只有一个处理程序,而不是有两个单独的处理程序——错误处理程序和异常处理程序 但是,将通知/警告转换为异常会在发生异常时停止脚本执行。这是预期的行为吗?您必须小心使用异常进行错误处理。关于这一点,有两个学派 一个学派指出,对错误使用异常是一件坏事,一般来说,由于异常可能导致控制混乱,因此应该谨慎使用异常 另一个学派喜欢它们,因为必须处理异常,它们可以防止代码被if语句弄乱 在任何情况下,如果您使用异常,您必

我听说将所有错误转换为异常是一种很好的做法。我完全同意这一点,这个解决方案的许多优点之一是我只有一个处理程序,而不是有两个单独的处理程序——错误处理程序和异常处理程序


但是,将通知/警告转换为异常会在发生异常时停止脚本执行。这是预期的行为吗?

您必须小心使用异常进行错误处理。关于这一点,有两个学派

一个学派指出,对错误使用异常是一件坏事,一般来说,由于异常可能导致控制混乱,因此应该谨慎使用异常

另一个学派喜欢它们,因为必须处理异常,它们可以防止代码被if语句弄乱

在任何情况下,如果您使用异常,您必须决定如何正确处理。当你抓住他们时会发生什么?你能康复吗?你将如何恢复?你会优雅地结束吗


简单地使用异常并不是故事的结束,从长远来看也不是。

您可以捕获异常。示例函数:

function myFunction($num){
    if(!is_int($num)){
        throw new Exception('Int expected. ' . gettype($num) . ' given instead.');
    }
}
然后捕获可能抛出或不抛出的任何异常(如果捕获它们是有意义的):

您还应了解以下功能:

设置未捕获异常时的默认异常处理程序 在try/catch块中。执行将在结束后停止 调用异常处理程序


嗯,是吗?这就是未捕获的异常所做的…我如何捕获意外的通知/警告?我不。我是否应该捕获可能引发通知/警告的所有内容?可以使用catch(异常$e)块。您可以在代码中将这些捕获放在很高的位置,以最大化它们捕获的内容;如果你的项目只有一个入口点,你可以在那里找到你的全部,但这没有意义。比如说,我将在整个网站上使用try-catch。它将正确捕获通知/警告,但错误不会停止脚本执行。不捕获异常将在致命错误上执行脚本,但也会在通知/警告上执行脚本。更不用说,在第一种情况下,我将无法访问处理程序。
try{
    myFunction('Hello?');
}
catch(Exception $e){
    //Do something
    var_dump($e);
}