前言:

异常是程序运行中不符合预期的情况,以及与正常流程不同的情况。属于逻辑和业务中断的情况,不属于语法错误。但是,异常不处理,在php中会议错误的形式出现,so,我们一起来看看PHP中是怎么处理异常的。

内容概要:

1、异常基本处理:try,throw和catch

2、异常基本处理的总结

一、异常基本处理:try,throw和catch

在PHP中,我们可以使用try,throw和catch的方式对异常进行抛出和捕获。

我们先看不处理的情况:

$a = 'PHP在路上';

echo 4/$a;

运行结果显示:

Warning: Division by zero in /Users/haodaquan/Sites/Test/exception/index.php on line 19

这个实验其实是试图利用除零的方式抛出一个异常,结果,在没有处理的情况下,PHP直接返回了错误的提示。

而对于除零问题,JAVA的处理方式就比较方便,它的内置类会直接获取这个异常情况。

继续,我们试着利用try threw抛出异常,并使用catch方式捕获进行处理:

$a = 'PHP在路上';

try {

if ($a === 0) {

throw new ZeroException("Error Processing Request1", 1);

}else

{

throw new MyException("Error Processing Request2", 1);

}

echo 4/$a;

} catch(MyException $e) {

echo $e->getMessage();

}

运行结果:

Error Processing Request

可以看出,这次我们成功捕获了异常,并对异常进行打印处理。但是,但是,但是,如果我们不在try模块中抛出异常的话,我们是无法捕获异常的。(这不是if else处理方式吗?)。

exception是一个PHP内置的异常处理类,下一节我们详细讨论,这里只需要知道他能捕获错误就行了。

继续,我们看抛出多个异常的写法:

$a = 'PHP在路上';

try {

if ($a === 0) {

throw new ZeroException("Error Processing Request1", 1);

}else

{

throw new MyException("Error Processing Request2", 1);

}

echo 4/$a;

} catch (ZeroException $e) {

echo $e->getMessage();

}

catch(MyException $e) {

echo $e->getMessage();

}

class ZeroException extends Exception

{

public function errorMessage()

{

//error message

return 'Zero:'.$this->getMessage();

}

}

class MyException extends Exception

{

public function errorMessage()

{

//error message

return 'MyMessage:'.$this->getMessage();

}

}

运行结果:

Error Processing Request2

到这里可以看出,PHP的异常处理,越来越像if else了(以后我们会纠正这个观点)。我们可以看出,PHP异常处理每手工抛出一个异常,就要有一个而且至少一个异常处理类相对应(当然,可以直接使用exception类),这句话的意思是:我们可以使用exception类来抛出和捕获所有的异常,不过这样,处理异常就显得有点麻烦了。

二、异常基本处理的总结

我们今天通过例子,了解PHP处理异常的基本方法:try,throw和catch,由此,我们得出以下结论,请大家探讨。

1、PHP的异常是必须手工抛出的,否则就是错误。

2、每个 throw 必须对应一个 catch,即有异常抛出,就必须捕获。

3、PHP异常处理机制是不完善的(相比较JAVA),处理异常比较繁琐。

php try 错误_PHP异常和错误(2)异常的基本处理:try相关推荐

  1. 深入探讨Java中的异常与错误处理

    Java中的异常处理机制已经比较成熟,我们的Java程序到处充满了异常的可能,如果对这些异常不做预先的处理,那么将来程序崩溃就无从调试,很难找到异常所在的位置.本文将探讨一下Java中异常与错误的处理 ...

  2. ASP.NET Core 异常和错误处理 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 异常和错误处理 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 异常和错误处理 上一章节中,我们学习了 ASP.NET Cor ...

  3. 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件

    导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件 参考文章: (1)导入数据任务(id:373985)异常, 错误信 ...

  4. odoo开发笔记 -- 异常、错误、警告、提示、确认信息显示

    odoo开发笔记 -- 异常.错误.警告.提示.确认信息显示 参考文章: (1)odoo开发笔记 -- 异常.错误.警告.提示.确认信息显示 (2)https://www.cnblogs.com/he ...

  5. Android Retrofit+RxJava 优雅的处理服务器返回异常、错误

    Android Retrofit+RxJava 优雅的处理服务器返回异常.错误 参考文章: (1)Android Retrofit+RxJava 优雅的处理服务器返回异常.错误 (2)https:// ...

  6. python错误-新手常见Python错误及异常解决处理方案

    写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细且不失通俗地总结一下python中的错误和异常. 先抛出两个问题: 什么是Python错误和异常? 如何处理Python错误和 ...

  7. python常见错误-新手常见Python错误及异常解决处理方案

    写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细且不失通俗地总结一下python中的错误和异常. 先抛出两个问题: 什么是Python错误和异常? 如何处理Python错误和 ...

  8. python错误-python异常与错误区别

    错误和异常概念 错误: 1.语法错误:代码不符合解释器或者编译器语法 2.逻辑错误:不完整或者不合法输入或者计算出现问题 异常:执行过程中出现万体导致程序无法执行 1.程序遇到逻辑或者算法问题 2.运 ...

  9. 拦截PHP各种异常和错误,发生致命错误时进行报警,万事防患于未然

    原文:拦截PHP各种异常和错误,发生致命错误时进行报警,万事防患于未然 在日常开发中,大多数人的做法是在开发环境时开启调试模式,在产品环境关闭调试模式.在开发的时候可以查看各种错误.异常,但是在线上就 ...

最新文章

  1. GitHub聊天通信开源UI框架stfalcon-studio/ChatKit使用教程
  2. 被final修饰的变量在哪存储_final,static,this,super 关键字总结,一点课堂(多岸学院)...
  3. 订阅号 图文回复php,微信开发(PHP实现订阅号的公众号配置和自动回复)
  4. Vue 3 正式发布
  5. 那些年我们踩过的乱码坑
  6. [转帖]Windows7 结束更新 以及后期更新花费。
  7. thinkphp5.x之数据库操作相关解析 Db类
  8. 基于51单片机数字电压表仿真设计_数码管显示
  9. KingbaseES和PostgreSQL兼容
  10. 原生android ui设计,在拟物和扁平之间寻找平衡:原生安卓UI设计进化史
  11. Word中硬回车与软回车的区别和用法
  12. 如何在微信公众号正文中添加附件?
  13. 微信发照片怎么在服务器上删除,我们发现微信发送原图,确实会暴露位置信息!但你可以这么解决...
  14. Python批量统计数据分布的偏度并画图
  15. 【中文】【吴恩达课后编程作业】Course 5 - 序列模型 - 第三周作业 - 机器翻译与触发词检测
  16. 03、集合之ArrayList
  17. 抽象类DateFormat
  18. Java 播放MP3
  19. ARM A35 A53
  20. nfc卡模式与标准模式_NFC 的通信模式。什么是点对点模式,什么是模拟卡和读卡器模式...

热门文章

  1. TP5的安装部署概要
  2. Spring Security Ajax 被拦截
  3. 覆盖与隐藏的区别 (一个列子)
  4. DNS分别在什么情况下使用UDP和TCP?
  5. [转载] Python pep8编码规范
  6. [转载] Python之使用K-Means算法聚类消费行为特征数据分析(异常点检测)
  7. 博客园五月纪念日——去你的写博无用论
  8. 牛客网 牛客小白月赛2 G.文
  9. DialogPlus
  10. 移动端rem布局(阿里)