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 中的一些经验积累
Oct 09 PHP
PHP中的cookie不用刷新就生效的方法
Feb 04 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
VB中的RasEnumConnections函数返回632错误解决方法
Jul 29 PHP
ThinkPHP实现动态包含文件的方法
Nov 29 PHP
PHP也能干大事之PHP中的编码解码详解
Apr 20 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 PHP
php实现的Curl封装类Curl.class.php用法实例分析
Sep 25 PHP
总结对比php中的多种序列化
Aug 28 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 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中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
解析thinkphp的左右值无限分类
2013/06/20 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
Javascript UrlDecode函数代码
2010/01/09 Javascript
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
jQuery实现的AJAX简单弹出层效果代码
2015/11/26 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
Python高效编程技巧
2013/01/07 Python
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
python自动化报告的输出用例详解
2018/05/30 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
新郎婚宴答谢词
2014/01/19 职场文书
揭牌仪式主持词
2014/03/19 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
军训后的感想
2015/08/07 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python
日元符号 ¥
2022/02/17 杂记