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 相关文章推荐
解决控件遮挡问题:关于有窗口元素和无窗口元素
Jan 28 PHP
随时给自己贴的图片加文字的php代码
Mar 08 PHP
php-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
php输出xml属性的方法
Mar 19 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
Sep 15 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 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
php mysql索引问题
2008/06/07 PHP
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
js获取php变量的实现代码
2013/08/10 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
vue3.0 上手体验
2020/09/21 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
Python计算回文数的方法
2015/03/11 Python
import的本质解析
2017/10/30 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
电子商务毕业生求职信
2013/11/10 职场文书
致标枪运动员加油稿
2014/02/15 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
SQL Server内存机制浅探
2022/04/06 SQL Server
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers