PHP 零基础入门笔记(10):错误处理 error

简介: PHP 零基础入门笔记(10):错误处理 error

错误处理 error

系统执行代码的时候,发现错误就会通过错误处理的形式告知程序员


错误分类

语法错误(Parse error):代码不符合 PHP 的语法规范,编译不通过

运行时错误(runtime error):编译通过,但是运行代码出错

逻辑错误:写代码不规范导致的逻辑性错误

// 此处 == 写成了 =, 永远为true
if($a = 0){}

错误代号

PHP 中定义的系统常量


1、系统错误

E_PARSE:        编译错误, 代码不会执行
E_ERROR:        fatal error,致命错误,代码不能继续执行
E_WARNING:      warning ,警告错误,不会影响代码执行,但是可能回得到意想不到的结果
E_NOTICE:       notice,通知错误,不影响代码执行

2、用户错误

E_USER_ERROR
E_USER_WARNING
E_USER_NOTICE

3、其他

E_ALL

所有 E 开头的错误常量都是由一个字节存储,每一种错误占据一个对应的位


如果想进行一些错误的控制,可以使用位运算


例如:

// 排除通知级别
E_ALL & ~E_NOTICE
// 只要警告和通知
E_WARNING | E_NOTICE

错误触发

系统触发

人为触发

trigger_error(错误提示);
// 可以传入第二个参数
trigger_error(错误提示, E_USER_ERROR);

错误显示设置

方式一:全局配置 php.ini

# 开发环境显示,生产环境不显示
display_errors = On / Off
error_reporting = E_ALL

方式二:运行脚本中设置(推荐)


// 设置对应的错误显示级别
error_reporting(级别)
// 获取当前的错误显示级别
error_reporting()
// 设置配置
init_set(配置文件中的配置项, 配置值);
init_set('error_reporting', E_ALL);
init_set('display_errors', 1);

错误日志设置

实际生产环境中,一般不显示错误


不友好

不安全

一般会将错误保存到日志文件中


ini.php 配置文件


# 开启日志
log_errors = On
# 指定路径
error_log = 'php_errors.log'

自定义错误处理

最简单的错误处理


trigger_error(string $error_msg, int $error_type = E_USER_NOTICE): bool

自定义错误处理函数


set_error_handler(callable $error_handler, int $error_types = E_ALL | E_STRICT): mixed
// 处理函数
handler(
    int $errno,
    string $errstr,
    string $errfile = ?,
    int $errline = ?,
    array $errcontext = ?
): bool

示例


<?php
// 自定义错误处理函数
function error_handler(
    int $errno,
    string $errstr,
    string $errfile,
    int $errline,
    array $errcontext
) {
    // 判断当前错误是否需要处理
    if (!(error_reporting() & $errno)) {
        return;
    }
    echo $errfile, ' ', $errline, ' ';
    // 处理错误类型
    switch ($errno) {
        case E_ERROR:
        case E_USER_ERROR:
            echo 'ERROR';
            break;
        case E_WARNING:
        case E_USER_WARNING:
            echo 'WARNING';
            break;
        case E_NOTICE:
        case E_USER_NOTICE:
            echo 'NOTICE';
            break;
    }
}
// 修改错误处理机制之前
echo $a;
// PHP Notice:  Undefined variable
// 设置错误处理机制,注册自定义函数
set_error_handler('error_handler');
// 修改错误处理机制之后
echo $a;
// NOTICE
相关文章
|
2月前
|
程序员 PHP UED
PHP中的错误处理和异常管理
【9月更文挑战第14天】在编程的世界里,错误和异常就像是路上的坑洞和绊脚石。它们总是不期而遇,但如何优雅地绕过或修复它们,是每个程序员的必修课。本文将深入探讨PHP中的错误处理和异常管理机制,带你了解如何捕获、处理这些“不速之客”,并确保你的应用程序能够稳健运行。准备好,让我们一起走进PHP的错误处理世界,学习如何让代码更健壮。
|
6月前
|
程序员 测试技术 数据库连接
PHP编程中的错误处理技巧
在PHP编程中,处理错误是至关重要的一环。本文将介绍几种常见的PHP错误类型及其处理技巧,包括语法错误、运行时错误和逻辑错误。通过学习正确的错误处理方法,可以提高代码的可靠性和可维护性,从而更好地保障程序的稳定性和安全性。
59 2
|
6月前
|
算法 IDE PHP
PHP编程中的错误处理与调试技巧
在PHP编程过程中,错误处理和调试是至关重要的环节。本文将介绍一些常见的PHP错误类型、优秀的调试工具以及有效的调试技巧,帮助开发者更高效地定位和解决代码中的问题。
63 3
|
PHP
PHP 自定义错误处理
PHP 自定义错误处理
66 0
|
程序员 PHP
PHP 错误处理、自定义错误、错误编号
PHP 错误处理、自定义错误、错误编号
70 0
|
1月前
|
安全 IDE 测试技术
PHP编程中的错误处理与调试技巧
【9月更文挑战第33天】在代码的世界里,错误是不可避免的。它们像是旅途中的绊脚石,挑战着开发者的耐心和智慧。本文将带你走进PHP的错误处理机制,教你如何优雅地面对和解决这些“意外的小惊喜”。从基本的语法错误到逻辑上的漏洞,我们将一起探索如何通过错误报告、自定义错误处理和调试技巧来提升代码质量。准备好,让我们开始这段寻找并消灭错误的旅程吧!
|
5月前
|
PHP
PHP错误处理技术文档
**PHP错误处理技术文档概要:** 本文档详述了PHP中的错误处理机制,包括错误级别、处理函数、日志及自定义处理器。PHP错误分为E_ERROR、E_WARNING、E_PARSE等类别,每种级别对应不同严重程度的问题。常用错误处理函数有error_reporting()、ini_set()和trigger_error()。错误日志可通过php.ini配置记录,自定义错误处理器能通过set_error_handler()注册,以更灵活地管理错误。生产环境中应关闭错误显示,启用日志记录。注意避免自定义处理器导致的递归错误。【6月更文挑战第9天】
51 2
|
6月前
|
数据库连接 PHP 数据库
【PHP开发专栏】PHP错误处理与异常捕获
【4月更文挑战第30天】PHP是流行的服务器端脚本语言,广泛用于动态网站和应用开发。本文深入探讨PHP的错误处理和异常捕获机制,分为三部分:首先介绍PHP错误处理,包括错误级别(如E_NOTICE、E_WARNING、E_ERROR)和错误处理函数;其次,讲解异常捕获,利用try-catch处理程序错误,自定义异常类;最后,讨论两者在数据库操作、文件操作和网络请求等场景的应用及最佳实践。示例代码展示了如何自定义错误处理器和异常处理。
105 2
|
2月前
|
PHP 数据安全/隐私保护 UED
PHP中实现自定义错误处理与异常管理
【9月更文挑战第2天】在PHP开发过程中,错误处理和异常管理是保证应用健壮性的关键。本文将引导你了解如何在PHP中创建自定义错误处理器,并通过实际代码示例展示如何有效捕获和处理异常,确保你的应用程序能够优雅地处理运行时出现的问题。
|
3月前
|
PHP 开发者 UED
PHP编程中的错误处理与异常管理
【8月更文挑战第27天】在PHP编程的世界中,错误和异常是开发者常遇到的两大挑战。本文旨在通过浅显易懂的方式,引导读者理解如何在PHP代码中妥善处理错误和异常。我们将从基础的错误处理讲起,逐步深入到异常管理的高级技巧,确保你的代码在遇到问题时能够优雅地处理,而不是崩溃。文章将用实例说明如何捕获、记录和处理这些事件,以保障应用的稳定性和用户体验。