本文目录导读:

在 PHP 中,错误码常量主要分为几大类,下面是完整的分类和定义:
核心错误常量(E_ 系列)
这些是最常用的错误级别常量:
// 致命错误(运行时) E_ERROR = 1 // 致命运行时错误,脚本终止 E_WARNING = 2 // 运行时警告,脚本继续执行 E_PARSE = 4 // 编译时解析错误 E_NOTICE = 8 // 运行时通知,可能是bugs E_CORE_ERROR = 16 // PHP 启动时致命错误 E_CORE_WARNING = 32 // PHP 启动时警告 E_COMPILE_ERROR = 64 // 编译时致命错误 E_COMPILE_WARNING = 128 // 编译时警告 E_USER_ERROR = 256 // 用户自定义错误 E_USER_WARNING = 512 // 用户自定义警告 E_USER_NOTICE = 1024 // 用户自定义通知 E_STRICT = 2048 // 编码标准化建议 E_RECOVERABLE_ERROR = 4096 // 可捕获的致命错误 E_DEPRECATED = 8192 // 弃用警告 E_USER_DEPRECATED = 16384 // 用户自定义弃用警告 E_ALL = 32767 // 所有错误(PHP 5.4+)
错误处理相关返回值
// 需要配合 set_error_handler() 使用 E_ERROR = 1 E_WARNING = 2 E_PARSE = 4 E_NOTICE = 8 // 错误处理函数的返回值 TRUE // 错误已被处理 FALSE // 错误未处理,继续向上传播
MySQL/PDO 错误码(部分示例)
PDO 错误码:
// SQLSTATE 错误码 '00000' // 成功 '42000' // 语法错误 '23000' // 违反约束 'HY000' // 一般错误
MySQL 原生错误码:
1064 // 语法错误 1045 // 认证失败 1049 // 数据库不存在 1146 // 表不存在 1451 // 外键约束失败
自定义错误码定义
// 应用级错误码示例
define('ERROR_SUCCESS', 0);
define('ERROR_NOT_FOUND', 404);
define('ERROR_VALIDATION', 422);
define('ERROR_SERVER', 500);
define('ERROR_UNAUTHORIZED', 401);
define('ERROR_FORBIDDEN', 403);
// 业务逻辑错误码
define('ERROR_USER_EXISTS', 1001);
define('ERROR_EMAIL_INVALID', 1002);
define('ERROR_PASSWORD_TOO_SHORT', 1003);
错误处理的实用函数
错误码转文字
function errorCodeToString($code) {
$errors = [
E_ERROR => 'Fatal Error',
E_WARNING => 'Warning',
E_PARSE => 'Parse Error',
E_NOTICE => 'Notice',
E_CORE_ERROR => 'Core Error',
E_CORE_WARNING => 'Core Warning',
E_COMPILE_ERROR => 'Compile Error',
E_COMPILE_WARNING => 'Compile Warning',
E_USER_ERROR => 'User Error',
E_USER_WARNING => 'User Warning',
E_USER_NOTICE => 'User Notice',
E_STRICT => 'Strict Standards',
E_RECOVERABLE_ERROR => 'Recoverable Error',
E_DEPRECATED => 'Deprecated',
E_USER_DEPRECATED => 'User Deprecated',
E_ALL => 'All Errors'
];
return isset($errors[$code]) ? $errors[$code] : 'Unknown Error (' . $code . ')';
}
// 使用示例
echo errorCodeToString(E_WARNING); // 输出: Warning
错误码检查
// 检查是否为致命错误
function isFatalError($errno) {
return in_array($errno, [E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE]);
}
// 检查是否为用户错误
function isUserError($errno) {
return in_array($errno, [E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE, E_USER_DEPRECATED]);
}
PHP 8.0+ 新增错误类
// PHP 8 引入了更多异常类 Error // 所有错误的基类 TypeError // 类型错误 ParseError // 解析错误 AssertionError // 断言失败 ArithmeticError// 算术错误(如除零) DivisionByZeroError // 除以零 ValueError // 非法值
实用示例
完整的错误处理配置
// 开发环境显示所有错误
error_reporting(E_ALL);
ini_set('display_errors', 1);
// 生产环境隐藏错误但记录日志
error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
// 自定义错误处理器
set_error_handler(function($errno, $errstr, $errfile, $errline) {
$message = "[$errno] $errstr in $errfile on line $errline";
error_log($message);
if (in_array($errno, [E_USER_ERROR, E_ERROR])) {
die('Fatal error occurred');
}
return true;
});
位运算和错误检查
// 错误码是位掩码,可以使用位运算
$reportedErrors = E_ALL & ~E_NOTICE & ~E_DEPRECATED;
// 检查错误是否被报告
if (error_reporting() & E_NOTICE) {
echo 'E_NOTICE is reported';
}
// 组合错误码
$requiredErrors = E_ERROR | E_WARNING | E_PARSE;
这些错误码在 PHP 开发中非常重要,正确使用它们可以帮助你更好地调试代码和构建健壮的应用程序。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播