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 XML操作类DOMDocument
Dec 16 PHP
Zend framework处理一个http请求的流程分析
Feb 08 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
php中error与exception的区别及应用
Jul 28 PHP
php版本的cron定时任务执行器使用实例
Aug 19 PHP
PHP动态输出JavaScript代码实例
Feb 12 PHP
PHP文件上传类实例详解
Apr 08 PHP
PHP验证码无法显示的原因及解决办法
Aug 11 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
Sep 28 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 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
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
详解angularJs中自定义directive的数据交互
2017/01/13 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
javascript的this关键字详解
2019/05/20 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
Python中每次处理一个字符的5种方法
2015/05/21 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
Python用input输入列表的实例代码
2020/02/07 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
父母对孩子的寄语
2014/04/09 职场文书
图书馆标语
2014/06/19 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
送给自己的励志语句:要安静的优秀,悄无声息的坚强
2019/11/26 职场文书
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android