PHP - 自定义异常错误

时间:2015-09-23 07:49:09

标签: php exception error-handling

我正在尝试使用我的自定义错误消息自定义异常错误,如下所示:

try {
        $test = 1/0;
    } 
    catch(Exception $ex){ 
        $t=time();
        $timelog = date("dmYhms",$t);
        error_log($timelog."=> ErrorID: ".$timelog."\n", 3, "../error_log/Error.log");
        echo "System having issue with this request.\n
                Transaction ID: ".$timelog; 
    } 

我的期望是,我设法echo自定义消息而不是默认消息,我设法写入日志文件。但是,我仍然会收到默认错误消息而不是自定义错误消息,如下图所示。 enter image description here

知道我犯了什么错误。请指教。

EDITED

error_reporting(0);
//error handler function
function customError($errno, $errstr) {
  //echo "<b>Error:</b> [$errno] $errstr<br>";
    $t=time();
    $timelog = date("dmYhms",$t);
    echo "Unable to process with the request. \n Error ID".$timelog.". PLease contact RND team.";
    error_log($timelog."=> Error: [$errno] $errstr\n", 3, "error_log/Error.log");
}

//set error handler
set_error_handler("customError",E_USER_WARNING);

//trigger error
$username = "xxx";
$password = "xxx";
$host = "xxxx";
$dbname = "xxx";

$db = new mysqli($host, $username, $password,$dbname);
if ($db->connect_error) {
    trigger_error($db->connect_error,E_USER_WARNING);
}

以上编辑过的样本工作正常,但这是最佳做法。请指教。

1 个答案:

答案 0 :(得分:0)

这不是例外。你试图捕捉到一个错误。您需要设置错误处理函数以转换错误/警告等以引发异常。在PHP7中,它将被更改,您将能够捕获toError接口

要将错误更改为异常,您需要使用set_error_handler()功能。您还可以找到this有趣的

编辑:

\Throwable

这仍然是非常基本的例子。如果您使用更好的处理错误优先级创建自己的异常类会更好。