| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> php基础(08):PHP7异常和错误处理机制 -> 正文阅读 |
|
[PHP知识库]php基础(08):PHP7异常和错误处理机制 |
1.php异常是什么?和错误有什么区别?
注意:php5上面代码是捕获不到的,php7可以。 错误等级
2.php拦截异常的函数 (1)set_exception_handler()?设置默认的异常处理程序,用于没有用 try/catch 块来捕获的异常。 在? set_exception_handler(callable? (2)set_error_handler() 设置用户自定义的错误处理函数: set_error_handler(callable? PHP 7.2.0 后此参数被弃用了。 极其不建议依赖它。 (3)register_shutdown_function() —?注册一个会在php中止时执行的函数 register_shutdown_function(callable? PHP7 新增了一个全新的接口 Throwable,Exception 和 Error 都实现了 Throwable 接口 Throwable 接口:
Throwable 可以捕获 try/catch 块中 Exception 和 Error 对象(或是任何未来可能)的异常类型。 如果要捕获特定类型的异常最好使用对应的 ***Exception 处理,Throwable 更偏向于处理未知错误和系统级错误。 在 PHP7 中,要捕获所有的错误应该使用 Throwable 而不是 Exception。
Error 内部错误 PHP7 中 fatal 或 recoverable 级别的错误都能抛出一个 Error 实例。可以使用 try/catch 块来捕获。$user = [];
Error 类细分出以下子类: ????????ArithmeticError:位移操作负数位或调用 intdiv() 时分子是 PHP_INT_MIN 且分母是 -1 (这个使用除法运算符的表达式:PHP_INT_MIN / -1,结果是浮点型) ????????DivisionByZeroError:intdiv() 的分母是 0 或者取模操作 (%) 中分母是 0 ????????AssertionError:assert() 的条件不满足 ????????CompileError:编译错误 ????????ParseError:include/require 文件或 eval() 代码存在语法错误 ????????TypeError:函数参数或返回值不符合声明的类型 ????????ArgumentCountError:递给用户定义的函数或方法的参数太少时被抛出 Exception?异常? ?? ????????RuntimeException ????????RuntimeExcption是执行异常,指程序身本以外无法由开发者控制的状况。 例如呼叫数据库,但是数据库没有回应,或者呼叫远程 API ,可是 API 却没有传回正确的数值。 另外也包含档案系统或环境的问题,例如程序要抓取的的某个外部档案不存在,或者应该安装的外部函式库没有正常运作,这些因为都不是开发者可以控制的,我们就统称为 RuntimeException。????????Web 开发最常见的状况就是数据库连接失败,或者SQL查询错误。 例如 PDO 所丢出来的 PDOException 就是既承自 RuntimeException。 所以我们要判断是否是数据库错误可以这样写:
LogicException ????????LogicException 则是反过来,属于程序本身的问题,应该要是开发者事前就解决的问题。 例如某个应该要被 Override 的 method 没有被 override,但 class 本身又因故无法设为 abstract 时,我们就在 method 中丢出 LogicException,要求开发者一定要处理这个问题。 另外,class未被引入,呼叫不存在的对象,或是你把数值除以零等等都属于此例外。class Command
? |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 1:31:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |