[PHP] Error笔记总结

【层次】
Throwable
    Exception:异常
    Error:错误
        ArithmeticError:算数错误
            DivisionByZeroError:除数为0的错误
        AssertionError:断言错误
        ParseError:解析错误
        TypeError :类型错误

【简介】
在PHP7更新中有一条:现在的PHP7实现了一个全局的 Throwable 接口,原来老的一部分错误实现了这个接口,可以通过 try-catch 捕获这些错误。

【例子】
<?php
    try {
        test();
    } catch(Throwable $e) {
        echo $e->getMessage();
    }

    try {
        test();
    } catch(Error $e) {
        echo $e->getMessage();
    }
?>

【笔记】
PHP5的错误包括:Parse error > Fatal Error > Waning > Notice > Deprecated

Deprecated 最低级别的错误(不推荐,不建议)
使用一些过期函数的时候会出现,程序继续执行

Notice 通知级别的错误
使用一些未定义变量、常量或者数组key没有加引号的时候会出现,程序继续执行
        E_NOTICE      // 运行时通知。表示脚本遇到可能会表现为错误的情况.
        E_USER_NOTICE // 用户产生的通知信息。

Waning 警告级别的错误
程序出问题了,需要修改代码!!!程序继续执行
        E_WARNING         // 运行时警告 (非致命错误)。
        E_CORE_WARNING    // PHP初始化启动过程中发生的警告 (非致命错误) 。
        E_COMPILE_WARNING // 编译警告
        E_USER_WARNING    // 用户产生的警告信息

Fatal Error 错误级别的错误
程序直接报错,需要修改代码!!!中断程序执行,可使用register_shutdown_function()函数在程序终止前触发一个函数
        E_ERROR         // 致命的运行错误,错误无法恢复,暂停执行脚本
        E_CORE_ERROR    // PHP启动时初始化过程中的致命错误
        E_COMPILE_ERROR // 编译时致命性错,就像由Zend脚本引擎生成了一个E_ERROR
        E_USER_ERROR    // 自定义错误消息。像用PHP函数trigger_error(错误类型设置为:E_USER_ERROR)

Parse error 语法解析错误
语法检查阶段报错,需要修改代码!!!中断程序执行,除了修改ini文件,将错误信息写到日志中,什么也做不了
        E_PARSE  //编译时的语法解析错误

【笔记】
在PHP5中自带的错误处理程序,并不能完全满足我们得需要,大部分时候,我们都需要手动重写异常处理(自定义错误处理程序)。

PHP给我们提供了三个函数来帮助我们来处理:

// ------------------------------------

set_error_handler()
函数来托管错误处理程序,可自行定制错误的处理流程。

如果此函数之前的代码发生错误,那么不会调用我们自定义的处理函数,因为还未注册。

设置此函数后 error_reporting() 将会失效。

以下级别的错误不能由用户定义的函数来处理: E_ERROR、 E_PARSE、 E_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR、 E_COMPILE_WARNING 该函数只能捕捉部分 Warning 和 Note 级别的错误。

// ------------------------------------

set_exception_handler()
用于没有被捕获的异常处理

// ------------------------------------

register_shutdown_function()
注册一个会在php中止时执行的函数

捕获PHP的错误:Fatal Error、Parse Error等,这个方法是PHP脚本执行结束前最后一个调用的函数,比如脚本错误、die()、exit、异常、正常结束都会调用,

如果拿来用错误处理的时候,需要配合error_get_last() 它能获取最后发生的错误。

// ------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值