在执行错误消息函数

时间:2016-10-23 17:21:16

标签: php error-handling

我希望在执行之前在php中收到错误消息。基本上我的意思是,如果我的代码不好:

// This code is incorrect, I want to receive the error before it gets handled!
$some_var = new this_class_is_not_made;

现在该类不存在,因此它将由php中的默认错误处理程序处理。但我想禁用正常的错误处理程序并创建自己的错误处理程序。

另一个例子:

somefunction( string some_var ); // some_var misses the variable prefix. ( $ )

示例错误消息:

  

致命错误:功能' some_var'没有在行中定义:$ x!

此错误将是:somefunction( string some_var );

但是我如何收到消息但是还会禁用正常的错误系统?

编辑:使错误系统执行user-defined功能

// I would want the error system to execute a function like this:
function(string $errorMessage, int $error_code){
    if($error_code < 253){ return "Fatal error"; }
    if($error_code < 528 && $error_code > 253){ return "Warning"; }
}

发现答案:作者:ShiraNai7

try
{
    // Code that may throw an Exception or Error.
}
catch (Throwable $t)
{
    // Executed only in PHP 7, will not match in PHP 5
}
catch (Exception $e)
{
    // Executed only in PHP 5, will not be reached in PHP 7
}

1 个答案:

答案 0 :(得分:0)

在PHP 7.0.0或更高版本中,如果Error不存在,代码将抛出this_class_is_not_made异常。

try {
    $some_var = new this_class_is_not_made;
} catch (Error $e) {
    echo $e->getMessage();
}

请注意,如果Error确实存在,这也将捕获任何其他this_class_is_not_made例外,并在此过程中导致其他错误。

在7.0.0之前的PHP版本中,你运气不好 - 致命错误总是会终止主脚本。

最好使用class_exists()代替:

if (class_exists('this_class_is_not_made')) {
    $some_var = new this_class_is_not_made;
}

这适用于所有支持类的PHP版本。