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 相关文章推荐
第十一节 重载 [11]
Oct 09 PHP
操作Oracle的php类
Oct 09 PHP
PHP实现定时生成HTML网站首页实例代码
Nov 20 PHP
paypal即时到账php实现代码
Nov 28 PHP
php重定向的三种方法分享
Feb 22 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
浅析php中json_encode()和json_decode()
May 25 PHP
10个实用的PHP正则表达式汇总
Oct 23 PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 PHP
Zend Framework动作助手FlashMessenger用法详解
Mar 05 PHP
PHP性能优化大全(php.ini)
May 20 PHP
PHP实现文件上传后台处理脚本
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
一个PHP数组应该有多大的分析
2009/07/30 PHP
php checkbox 取值详细说明
2010/08/19 PHP
PHP explode()函数用法、切分字符串
2012/10/03 PHP
php中stream(流)的用法
2014/03/25 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
PHPThumb图片处理实例
2014/05/03 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
php生成xml时添加CDATA标签的方法
2014/10/17 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
jQuery的ajax下载blob文件
2016/07/21 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
python导入坐标点的具体操作
2019/05/10 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
python求绝对值的三种方法小结
2019/12/04 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
大学生志愿者活动总结
2014/06/27 职场文书
安全生产年活动总结
2014/08/29 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书