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异常处理捕获哪些错误的详细内容,感谢大家的学习和对开心学习网的支持。
- php使用面向对象如何写好代码(PHP面向对象程序设计模拟一般面向对象语言中的方法重载overload示例)
- php常用加密技术(php用户名的密码加密更安全的方法)
- thinkphp5.0实例详解(ThinkPHP5&5.1框架关联模型分页操作示例)
- php中如何打开文件读文件(PHP通过文件保存和更新信息的方法分析)
- php面向对象运用场景(PHP面向对象类型约束用法分析)
- php守护进程(什么是PHP7中的孤儿进程与僵尸进程)
- phpinclude的使用方法(PHP defined函数的使用图文详解)
- php开发微信小程序后台步骤流程(基于PHP实现微信小程序客服消息功能)
- 如何在php内加密解密(PHP中散列密码的安全性分析)
- 虚拟机windows server安装php环境(winxp apache用php建本地虚拟主机的方法)
- php单例模式教程学习(PHP下用Swoole实现Actor并发模型的方法)
- php启用curl(php使用curl伪造浏览器访问操作示例)
- php分页函数有什么用(php实现分页功能的详细实例方法)
- phpweb应用技术开发与数据库教程(IIS8 使用FastCGI配置PHP环境图文教程)
- lnmp安装php(LNMP系列教程之二 删除站点及域名绑定)
- php读取远程的txt文件(php 根据URL下载远程图片、压缩包、pdf等文件到本地)
- 挑战新国标电自天花板,九号机械师MMAX 110P深度体验(挑战新国标电自天花板)
- 《满江红》不要只当电影看,学生应该这样做(满江红不要只当电影看)
- 电影《民间怪谈录之走阴人》定档8月5日,开启一场中式惊悚之旅(电影民间怪谈录之走阴人定档8月5日)
- 原创图画书,以儿童视角讲述中国故事(以儿童视角讲述中国故事)
- 八月再见 愿你岁月不扰,余生静好(八月再见愿你岁月不扰)
- 赏读 八月再见,九月你好(赏读八月再见九月你好)
热门推荐
- SQL中的@@Error的使用
- ubuntu20.04安装启动问题(安装ubuntu18.04报:failed to load ldlinux.c32的问题及解决步骤)
- docker容器启动失败怎么查找原因(解决docker容器启动后马上退出的问题)
- django怎么设置数据库(django配置连接数据库及原生sql语句的使用方法)
- docker配置https访问方式(docker 中配置 eureka的方法)
- mysql表结构设计分享(MySql开发之自动同步表结构)
- canvas如何调试(关于canvas.toDataURL 在iOS运行失败的问题解决)
- TransactionScope的使用
- docker harbor 配置中央仓库(Docker Gitlab+Jenkins+Harbor构建持久化平台操作)
- php cookie(php更新cookie内容的详细方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9