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+APACHE实现用户论证的方法
Oct 09 PHP
使用php清除bom示例
Mar 03 PHP
ThinkPHP查询中的魔术方法简述
Jun 25 PHP
PHP获取POST数据的几种方法汇总
Mar 03 PHP
推荐十款免费 WordPress 插件
Mar 24 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
Apr 30 PHP
示例详解Laravel重置密码代码重构
Aug 10 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
PHP实现的简单组词算法示例
Apr 10 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 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
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
php结合curl实现多线程抓取
2015/07/09 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
JavaScript动态添加列的方法
2015/03/25 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
介绍JavaScript中Math.abs()方法的使用
2015/06/14 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
跟老齐学Python之一个免费的实验室
2014/09/14 Python
python计算书页码的统计数字问题实例
2014/09/26 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
python使用minimax算法实现五子棋
2019/07/29 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
python 项目目录结构设置
2020/02/14 Python
python两个list[]相加的实现方法
2020/09/23 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
商务专员岗位职责范本
2014/06/29 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
《绝招》教学反思
2016/02/20 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python
Python爬虫网络请求之代理服务器和动态Cookies
2022/04/12 Python
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL