Sto*_*art 7 php error-handling
我需要一个解决方案来捕获所有php致命错误,异常,警告等...并给出回调.所以我可以向用户显示友好版本并记录该错误.关于记录方法.我的php脚本允许许多站点在单个安装中运行.我想我每天都会使用文本文件.任何sugesstion或php类,lib?
use*_*158 23
从 PHP 8 开始,捕获所有异常的最佳方法是捕获Throwable接口,该接口“是任何可以通过 throw 语句抛出的对象的基本接口”。所以你的代码看起来像这样。
try {
# code...
} catch (\Throwable $th) {
# code...
}
Run Code Online (Sandbox Code Playgroud)
这使得几乎所有错误成为可捕获的实例ErrorException:
set_error_handler(function($errno, $errstr, $errfile, $errline ){
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
});
Run Code Online (Sandbox Code Playgroud)
在可以给出错误的代码之前使用它,例如在php文件的最顶层或包含的公共头文件中
限制:病犬错误(PHP引擎,服务器,语法)不能与用户定义的函数来处理:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,大部分E_STRICT地方的set_error_han dler()被调用妥协它在文件中提出的.
但是,如果语法正确且服务器没有损坏,则不应出现这些错误.
如果需要,您可以使用register_shutdown_function()和解决方法error_get_last()
php方法:set_error_handler可能就是你要找的东西.
更多信息请访问:http://www.php.net/manual/en/function.set-error-handler.php
在:http://php.net/manual/en/book.errorfunc.php
小智 5
尝试启动此网页,您应该会看到“消息:除以零”。
// Set Error Handler
set_error_handler (
function($errno, $errstr, $errfile, $errline) {
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
);
// Trigger an exception in a try block
try {
$a = 3/0;
echo $a;
}
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20636 次 |
| 最近记录: |