php try 错误_PHP异常和错误(2)异常的基本处理:try
前言:
异常是程序运行中不符合预期的情况,以及与正常流程不同的情况。属于逻辑和业务中断的情况,不属于语法错误。但是,异常不处理,在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相关推荐
- 深入探讨Java中的异常与错误处理
Java中的异常处理机制已经比较成熟,我们的Java程序到处充满了异常的可能,如果对这些异常不做预先的处理,那么将来程序崩溃就无从调试,很难找到异常所在的位置.本文将探讨一下Java中异常与错误的处理 ...
- ASP.NET Core 异常和错误处理 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 异常和错误处理 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 异常和错误处理 上一章节中,我们学习了 ASP.NET Cor ...
- 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件
导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件 参考文章: (1)导入数据任务(id:373985)异常, 错误信 ...
- odoo开发笔记 -- 异常、错误、警告、提示、确认信息显示
odoo开发笔记 -- 异常.错误.警告.提示.确认信息显示 参考文章: (1)odoo开发笔记 -- 异常.错误.警告.提示.确认信息显示 (2)https://www.cnblogs.com/he ...
- Android Retrofit+RxJava 优雅的处理服务器返回异常、错误
Android Retrofit+RxJava 优雅的处理服务器返回异常.错误 参考文章: (1)Android Retrofit+RxJava 优雅的处理服务器返回异常.错误 (2)https:// ...
- python错误-新手常见Python错误及异常解决处理方案
写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细且不失通俗地总结一下python中的错误和异常. 先抛出两个问题: 什么是Python错误和异常? 如何处理Python错误和 ...
- python常见错误-新手常见Python错误及异常解决处理方案
写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细且不失通俗地总结一下python中的错误和异常. 先抛出两个问题: 什么是Python错误和异常? 如何处理Python错误和 ...
- python错误-python异常与错误区别
错误和异常概念 错误: 1.语法错误:代码不符合解释器或者编译器语法 2.逻辑错误:不完整或者不合法输入或者计算出现问题 异常:执行过程中出现万体导致程序无法执行 1.程序遇到逻辑或者算法问题 2.运 ...
- 拦截PHP各种异常和错误,发生致命错误时进行报警,万事防患于未然
原文:拦截PHP各种异常和错误,发生致命错误时进行报警,万事防患于未然 在日常开发中,大多数人的做法是在开发环境时开启调试模式,在产品环境关闭调试模式.在开发的时候可以查看各种错误.异常,但是在线上就 ...
最新文章
- GitHub聊天通信开源UI框架stfalcon-studio/ChatKit使用教程
- 被final修饰的变量在哪存储_final,static,this,super 关键字总结,一点课堂(多岸学院)...
- 订阅号 图文回复php,微信开发(PHP实现订阅号的公众号配置和自动回复)
- Vue 3 正式发布
- 那些年我们踩过的乱码坑
- [转帖]Windows7 结束更新 以及后期更新花费。
- thinkphp5.x之数据库操作相关解析 Db类
- 基于51单片机数字电压表仿真设计_数码管显示
- KingbaseES和PostgreSQL兼容
- 原生android ui设计,在拟物和扁平之间寻找平衡:原生安卓UI设计进化史
- Word中硬回车与软回车的区别和用法
- 如何在微信公众号正文中添加附件?
- 微信发照片怎么在服务器上删除,我们发现微信发送原图,确实会暴露位置信息!但你可以这么解决...
- Python批量统计数据分布的偏度并画图
- 【中文】【吴恩达课后编程作业】Course 5 - 序列模型 - 第三周作业 - 机器翻译与触发词检测
- 03、集合之ArrayList
- 抽象类DateFormat
- Java 播放MP3
- ARM A35 A53
- nfc卡模式与标准模式_NFC 的通信模式。什么是点对点模式,什么是模拟卡和读卡器模式...