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+DBM的同学录程序(1)
Oct 09 PHP
php生成xml简单实例代码
Dec 16 PHP
ThinkPHP3.2.2的插件控制器功能简述
Jul 09 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 PHP
php无限分类使用concat如何实现
Nov 05 PHP
全面解读PHP的Yii框架中的日志功能
Mar 17 PHP
PHP实现获取并生成数据库字典的方法
May 04 PHP
PHP微信支付开发实例
Jun 22 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
Oct 24 PHP
PHP实现搜索时记住状态的方法示例
May 11 PHP
php实现微信原生支付(扫码支付)功能
May 30 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 程序员应该使用的10个组件
2009/10/31 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
如何判断图片地址是否失效
2007/02/02 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
完善的jquery处理机制
2016/02/21 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
Python实现抢购IPhone手机
2018/02/07 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
python模拟实现分发扑克牌
2020/04/22 Python
Python实现简单的2048小游戏
2021/03/01 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
介绍一下except的用法和作用
2015/01/22 面试题
绘画设计学生的个人自我评价
2013/09/20 职场文书
初中生学习生活的自我评价
2013/11/20 职场文书
英语系本科生求职信范文
2013/12/18 职场文书
团队精神演讲稿
2013/12/31 职场文书
复核员上岗演讲稿
2014/01/05 职场文书
食品安全检查制度
2014/02/03 职场文书
学生鉴定评语大全
2014/05/05 职场文书
买房协议书范本
2014/10/23 职场文书
超市采购员岗位职责
2015/04/07 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
高中数学教学反思范文
2016/02/18 职场文书