我正在尝试使用我的自定义错误消息自定义异常错误,如下所示:
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
自定义消息而不是默认消息,我设法写入日志文件。但是,我仍然会收到默认错误消息而不是自定义错误消息,如下图所示。
知道我犯了什么错误。请指教。
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);
}
以上编辑过的样本工作正常,但这是最佳做法。请指教。
答案 0 :(得分:0)
这不是例外。你试图捕捉到一个错误。您需要设置错误处理函数以转换错误/警告等以引发异常。在PHP7中,它将被更改,您将能够捕获to
或Error
接口
要将错误更改为异常,您需要使用set_error_handler()功能。您还可以找到this有趣的
编辑:
\Throwable
这仍然是非常基本的例子。如果您使用更好的处理错误优先级创建自己的异常类会更好。