PHP ErrorException异常

2024-01-05 56

PHP中的Exception类实现了Throwable接口,它是所有可抛出异常的基类。而ErrorException类则继承自Exception类,用于表示运行时错误。如果想要捕获和处理一些通知或警告级别的错误时,可以显式地抛出一个继承自ErrorException类的异常对象。

一、PHP核心错误常量

PHP核心包含以下预定义的错误常量:

常量 描述
1 E_ERROR 致命的运行时错误。
2 E_WARNING 运行时警告(非致命错误)。
4 E_PARSE 编译时解析错误。
8 E_NOTICE 运行时通知。
16 E_CORE_ERROR 在PHP的初始启动过程中发生的致命错误。
32 E_CORE_WARNING 在PHP的初始启动过程中发生的警告(非致命错误)。
64 E_COMPILE_ERROR 致命的编译时错误。
128 E_COMPILE_WARNING 编译时警告(非致命错误)。
256 E_USER_ERROR 用户生成的错误消息。
512 E_USER_WARNING 用户生成的警告消息。
1024 E_USER_NOTICE 用户生成的通知消息。
2048 E_STRICT 如果启用,PHP建议更改您的代码,以确保代码的互操作性和向前兼容性。
4096 E_RECOVERABLE_ERROR 可捕获的致命错误。
8192 E_DEPRECATED 运行时通知。
16384 E_USER_DEPRECATED 用户生成的警告消息。
32767 E_ALL 所有错误和警告,E_STRICT

二、类摘要

class ErrorException extends Exception {
/* 属性 */
protected int $severity = E_ERROR;
/* 继承的属性 */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* 方法 */
public __construct(
string $message = "",
int $code = 0,
int $severity = E_ERROR,
?string $filename = null,
?int $line = null,
?Throwable $previous = null
)
final public getSeverity(): int
/* 继承的方法 */
final public Exception::getMessage(): string
final public Exception::getPrevious(): ?Throwable
final public Exception::getCode(): int
final public Exception::getFile(): string
final public Exception::getLine(): int
final public Exception::getTrace(): array
final public Exception::getTraceAsString(): string
public Exception::__toString(): string
private Exception::__clone(): void

三、属性

在异常处理中,severity(严重程度)通常用来指定异常的级别或优先级,以便开发人员可以根据不同级别对异常进行分类和处理。

四、示例

使用 set_error_handler() 函数将错误信息托管至 ErrorException。:

<?php
function exception_error_handler(int $errno, string $errstr, string $errfile = null, int $errline) {
if (!(error_reporting() & $errno)) {
// 这个错误代码未包含在 error_reporting 中
return;
}
throw new \ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler(exception_error_handler(...));
// 在 PHP 8.1.0 引入 First-class 可调用语法之前,必须使用下面的调用来代替
// set_error_handler(__NAMESPACE__ . "\\exception_error_handler");
/* 触发异常 */
strpos();
?>

以上示例的输出类似于:

Fatal error: Uncaught exception 'ErrorException' with message 'strpos() expects at least 2 parameters, 0 given' in /home/bjori/tmp/ex.php:12
Stack trace:
#0 [internal function]: exception_error_handler(2, 'strpos() expect...', '/home/bjori/php...', 12, Array)
#1 /home/bjori/php/cleandocs/test.php(12): strpos()
#2 {main}
thrown in /home/bjori/tmp/ex.php on line 12
  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
PHP ErrorException异常
上一篇: PHP Exception
PHP ErrorException异常
下一篇: PHP Error