php中try catch捕获异常实例详解


Posted in PHP onAugust 06, 2020

PHP 5 添加了类似于其它语言的异常处理模块。在 PHP 代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。(注:一定要先抛才能获取)

需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。

每一个 try 至少要有一个与之对应的 catch。

使用多个 catch可以捕获不同的类所产生的异常。

当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。

当然,PHP允许在 catch 代码块内再次抛出(throw)异常。

当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而 PHP 就会尝试查找第一个能与之匹配的 catch。

如果一个异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出 Uncaught Exception ... (未捕获异常)的提示信息。

先来看一下PHP内置异常类的基本属性和方法。(不包括具体实现)

<?php
/**
* Exception.php
* 
* PHP5内置的异常类的属性与方法
* 以下这段代码只为说明内置异常处理类的结构,它并不是一段有实际意义的可用代码。
*/
 
class Exception{
	protected $message = 'Unknown exception'; // 异常信息
	protected $code = 0; // 用户自定义异常代码
	protected $file; // 发生异常的文件名
	protected $line; // 发生异常的代码行号
 
	function __construct($message = null, $code = 0);
	final function getMessage(); // 返回异常信息
	final function getCode(); // 返回异常代码(代号)
	final function getFile(); // 返回发生异常的文件名
	final function getLine(); // 返回发生异常的代码行号
	final function getTrace(); // backtrace() 数组
	final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
 
	//可重载的方法
	function __toString(); // 可输出的字符串
}
?>

例子如下:

包含文件错误抛出异常

<?php
// 错误的演示
try {
require ('test_try_catch.php');
} catch (Exception $e) {
echo $e->getMessage();
}


// 正确的抛出异常
try {
if (file_exists('test_try_catch.php')) {
require ('test_try_catch.php');
} else {
throw new Exception('file is not exists');
}
} catch (Exception $e) {
echo $e->getMessage();
}

到此这篇关于php中try catch捕获异常实例详解的文章就介绍到这了,更多相关php中try catch捕获异常内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
PHP中,文件上传
Dec 06 PHP
通过具体程序来理解PHP里面的抽象类
Jan 28 PHP
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
解析php中die(),exit(),return的区别
Jun 20 PHP
PHP判断远程图片是否存在的几种方法
May 04 PHP
php中数字0和空值的区别分析
Jun 05 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
Netbeans 8.2将支持PHP7 更精彩
Jun 13 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
php redis setnx分布式锁简单原理解析
Oct 23 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
Mar 04 PHP
PHP日期和时间函数的使用示例详解
Aug 06 #PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
Aug 06 #PHP
PHP文件打开关闭及读写操作示例解析
Aug 06 #PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
Aug 06 #PHP
基于PHP实现用户登录注册功能的详细教程
Aug 04 #PHP
PHP与Web页面的交互示例详解二
Aug 04 #PHP
PHP与Web页面的交互示例详解一
Aug 04 #PHP
You might like
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
wordpress之js库集合研究介绍
2007/08/17 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
python中的lambda表达式用法详解
2016/06/22 Python
彻底搞懂Python字符编码
2018/01/23 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
python 字符串常用方法汇总详解
2019/09/16 Python
Python笔记之观察者模式
2019/11/20 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
学术会议欢迎词
2014/01/09 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
家长给老师的感谢信
2015/01/20 职场文书
观后感的写法
2015/06/19 职场文书
珍爱生命主题班会
2015/08/13 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
MySQL Shell的介绍以及安装
2021/04/24 MySQL
php png失真的原因及解决办法
2021/11/17 PHP