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 cache类代码(php数据缓存类)
Apr 15 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
Apr 23 PHP
php站内搜索并高亮显示关键字的实现代码
Dec 29 PHP
关于php循环跳出的问题
Jul 01 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
Jun 30 PHP
php 指定范围内多个随机数代码实例
Jul 18 PHP
总结的一些PHP开发中的tips(必看篇)
Mar 24 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 04 PHP
PHP实现的mysql读写分离操作示例
May 22 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
清空上传控件input file的值
2010/07/03 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
cookie的secure属性详解
2015/04/08 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
JavaScript实现区块链
2018/03/14 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
python实现图片文件批量重命名
2020/03/23 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
深入理解Python 多线程
2020/06/16 Python
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
社团文化节邀请函
2014/01/10 职场文书
工厂保安员岗位职责
2014/01/31 职场文书
教育学习自我评价
2014/02/03 职场文书
人事部经理岗位职责
2014/03/07 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
食品安全处置方案
2014/06/14 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
2014民事授权委托书范本
2014/09/29 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
小学优秀学生评语
2014/12/29 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技