php try catch能捕获致命错误吗(php异常处理捕获错误整理)
php try catch能捕获致命错误吗
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异常处理捕获哪些错误的详细内容,感谢大家的学习和对开心学习网的支持。
- phpstudy中apache到期如何修改(phpStudy找不到Apache“服务名” 解决方法)
- php数据库怎么获得表单(php如何把表单内容提交到数据库)
- php中把字符串分开的函数(PHP字符串中抽取子串操作实例分析)
- php开发技巧和方法(php+ajax实现商品对比功能示例)
- thinkphp框架多文件上传完整代码(Thinkphp5 自定义上传文件名的实现方法)
- php哪个函数具有字符串截取功能(php字符串截取函数mb_substr用法实例分析)
- php中最常用的标记符(php中目录操作opendir、readdir及scandir用法示例)
- php怎么设置静态成员函数(php输出控制函数和输出函数生成静态页面)
- php怎样创建新文件详情(php文件后缀不强制为.php的实操方法)
- php实现session入库实例(PHP使用Session实现上传进度功能详解)
- php根据名称规则判断文件是否存在(PHP中上传文件打印错误错误类型分析)
- dedecms手机独立域名(DedeCMS Wap.php 绑定域名的解决办法)
- php 面向对象与面向过程(php面向对象重点知识分享)
- php执行语句(PHP goto语句用法实例)
- php 策略模式工厂模式区别(PHP设计模式之策略模式原理与用法实例分析)
- php怎么引用文件(php引用和拷贝的区别知识点总结)
- 黄渤泪目 我的痴呆父亲,我内心永远的痛(黄渤泪目我的痴呆父亲)
- 蒜苔和鱿鱼尾巴一起炒,味道特别棒,又脆又嫩,有滋又有味(蒜苔和鱿鱼尾巴一起炒)
- 鱿鱼炒蒜苔不是黑暗料理,这样做清香扑鼻,鲜美脆嫩,开胃又下饭(鱿鱼炒蒜苔不是黑暗料理)
- 蒜苔炒鱿鱼(蒜苔炒鱿鱼)
- 远离 五毛食品 洛阳80后妈妈发明的 飞行棋 成校园爆款 玩具(远离五毛食品)
- 失传的古代飞行棋游戏 六博(失传的古代飞行棋游戏)
热门推荐
- 用户 IIS APPPOOLDefaultAppPool 登录失败的解决方法
- vue监控对象变化(Vue之监听方法案例详解)
- 微信小程序开发模式(微信小程序引入Vant框架的全过程记录)
- 香港免费虚拟主机(香港虚拟主机租用要怎么选择?)
- win7iis服务器的安装与配置(Win7怎么装IIS 安装IIS具体方法安装教程)
- mysql读写分离代码实现(MySQL Router实现MySQL的读写分离的方法)
- python设计一个聊天机器人(手把手教你使用Python创建微信机器人)
- tomcat架构解析(浅谈Tomcat多层容器的设计)
- filter的用法css(CSS filter 有什么神奇用途)
- python外部如何调嵌套函数(python中嵌套函数的实操步骤)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9