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一些有意思的小区别
Dec 06 PHP
JS实现php的伪分页
May 25 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
Oct 16 PHP
php隐藏实际地址的文件下载方法
Apr 18 PHP
CI框架简单邮件发送类实例
May 18 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
PHP递归实现快速排序的方法示例
Dec 18 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
Apr 20 PHP
详解PHP PDO简单教程
May 28 PHP
php文件上传原理与实现方法详解
Dec 20 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/03 冲泡冲煮
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
Python做文本按行去重的实现方法
2016/10/19 Python
python文本数据相似度的度量
2018/03/12 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
Python读取stdin方法实例
2019/05/24 Python
对Python函数设计规范详解
2019/07/19 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
sklearn+python:线性回归案例
2020/02/24 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
python定义类的简单用法
2020/07/24 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
如何用JQuery进行表单验证
2013/05/29 面试题
计算机操作自荐信
2013/12/07 职场文书
车辆安全检查制度
2014/01/12 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
出国留学经济担保书
2014/04/01 职场文书
周年庆典主持词
2014/04/02 职场文书
大学生应聘求职信
2014/05/26 职场文书
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python
Vue Element plus使用方法梳理
2022/12/24 Vue.js