php异常处理捕获错误整理
PHP的错误报告有三种:
1、错误,语法解析错误,致命错误
2、警告
3、注意
后果:
错误 -> 致命错误,会终止已下程序的执行,语法错误的话,PHP压根就没执行。
警告 -> 他不会终止运行,但会影响结果。
注意 -> 不会终止执行,也不会影响结果。
为了让用户得到更好的体验,我们屏蔽所有错误的输出,是输出,而不是显示。但这样的话,管理员也看不到错误了。页面上不显示错
误,而将错误生成一个日志,提供给管理员查看。
error_reporting(~E_ALL)将所有输出都屏蔽掉了,自然,管理员也看不到了。我不要屏蔽所有输出,我只要屏蔽所有显示
ini_set('display_errors','off');表示屏蔽了所有的页面上错误的显示,但没有屏蔽错误的输出。
ini_set('log_errors','on'); //开启日志写入功能 ini_set('error_log','myerror.log'); //日志的存放位置 ini_set('display_errors','off'); //屏蔽页面显示 error_reporting(E_ALL); //输出所有错误 echo 123; echo $str; //这个会出现一个注意,表示未声明变量 echo date(); //警告,没有传参 echo dae(); //致命错误,找不到这个函数 echo 123;
异常:
在 PHP语言里,所有异常都必须自己抛出,而不像 JAVA 之类的语言会自动抛出异常,这也正是 PHP源代码里很少看到异常处理语句的
原因之一。
异常与错误:
异常是指程序运行中不符合预期情况以及与正常流程不同的状况。错误则属于自身问题,是一种非法语法或者环境问题导致的、让编译器
无法通过检查设置无法运行的情况。
由于php最开始是没有异常处理,后来为了进军企业级开发,模仿。PHP一旦遇到非正常代码,大多数情况下,都是直接抛出错误,而不
是异常。
php只有在你throw 一个异常后,才能用try...catch来捕获异常(一般情况下如此,也有部分异常可以自动捕获)。
在php中通常会在以下场景中使用异常:
1、对程序的悲观预测:如果认为自己的代码无法一一处理各种可预见的情况、不可预见的情况。
2、程序的需要和对业务的关注 : 如果对数据的一致性要求很高时,可以用try...catch把异常造成的逻辑中断破坏将到最小,并且经过补救
处理后,不影响业务逻辑的完整性。
3、语言级别的健壮性要求 : 通过精确控制运行时的流程,在程序中断时,有预见的用try...catch缩小可能出错的范围,及时捕获异常并做
出相应的补救。
PHP中的错误:
错误就是会使脚本运行不正常的情况。
在php中主要的错误等级如下:
deprecated: 最低级别的错误,表示"不推荐, 不建议"。例如在php 5中使用了ereg系列的正则函数就会出现。这类错误一般由于使用了不推荐的、过时的函数或语法造成。不影响程序正常运行,但建议修正。
notice: 一般指语法中存在不恰当的地方。如使用变量但是未定义就会报此错误。不影响程序正常流程。
warning: 较高级别的错误,在语法中出现很不恰当的情况才会出现此错误,比如函数参数不匹配。会导致得不到预期的结果,需要修改代码。
fetal error: 致命错误,直接导致程序终止运行。这类错误必须修改。
prase error: 语法解析错误,上面几种都属于运行时错误,此错误在运行前就会抛出。
自定义错误处理程序:
可以使用 set_error_handler() 函数来托管错误处理程序,可自行定制错误的处理流程。
如果要取消托管的话,可以在同一个页面中使用restore_error_handler()来取消托管;如果想要自己抛出一个错误的话,可以使用
trigger_error()函数。
以上就是php异常处理捕获哪些错误的详细内容,感谢大家的学习和对脚本之家的支持。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何在CentOS中安装PHP7.4的方法步骤
- Linux安装Python3如何和系统自带的Python2并存
- Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
- PHP学习记录之常用的魔术常量详解
- laravel orm 关联条件查询代码
- PHP实现财务审核通过后返现金额到客户的功能
- Laravel框架中的路由和控制器操作实例分析
- php利用array_search与array_column实现二维数组查找
- Python实现手绘图效果实例分享
- php如何把表单内容提交到数据库
- Laravel5.5 视图 – 创建视图和数据传递示例
- 浅谈Python爬虫原理与数据抓取
- PHP封装cURL工具类与应用示例
- php中isset与empty函数的困惑与用法分析
- 布隆过滤器(bloom filter)及php和redis实现布隆过滤器的方法