如何处理php中的错误或异常?

时间:2015-10-23 15:12:55

标签: php mysqli error-handling exception-handling runtime-error

我不知道在php中处理错误,无论是运行时还是编译时。我想管理所有类型的错误。

  

注意,警告,分析错误,致命错误

当出现这些类型的错误时,我希望我的程序在页面上抛出自定义写入的消息。目前我正在使用try{} catch{}set_error_handler

// set to the user defined error handler
$old_error_handler = set_error_handler("myErrorHandler");

简而言之:我正在寻找正确的方法来处理错误,如果我输入错误的变量声明,如d而不是$d,或者如果我忘记了一行中的分号,或者如果我收到MySQL错误。

2 个答案:

答案 0 :(得分:2)

您需要设置两者,错误处理程序和异常处理程序。如果同时抛出错误和未捕获的异常,您将看到两条消息都显示出来:

<?php
function exception_handler($exception) {
    echo "Custom exception message: " . $exception->getMessage() . "\n";
}

function error_handler($errno, $errstr, $errfile, $errline) {
    echo "Custom error message: "  . $errstr . "\n";
}

set_exception_handler('exception_handler');
set_error_handler('error_handler');

//This exception will *not* cause exception_handler() to execute - 
//we have addressed this exception with catch.
try{
    throw new Exception('I will be caught!');
} catch (Exception $e) {
    echo "Caught an exception\n";
}

//Unmanged errors
trigger_error("I'm an error!");
throw new Exception("I'm an uncaught exception!");
?>

输出:

  

抓住了异常

     

自定义错误消息:我发生了错误!

     

自定义异常消息:我是未捕获的异常!

您可以(并且应该)仍然使用try{} ... catch(){}来解决出现的错误,但是在脚本执行完毕后,异常处理程序将无法处理这些错误。

有关exception handlers的更多信息。

有关error handlers的更多信息。

答案 1 :(得分:0)

您想要调试错误而不是抑制它们。编写代码是25%编码和75%调试(可论证)。你给出抑制错误的原因只是从一开始就编写错误的代码。