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 相关文章推荐
桌面中心(二)数据库写入
Oct 09 PHP
php在字符串中查找另一个字符串
Nov 19 PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 PHP
ThinkPHP模板替换与系统常量及应用实例教程
Aug 22 PHP
PHP实现可自定义样式的分页类
Mar 29 PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
php接口实现拖拽排序功能
Apr 23 PHP
PDO::setAttribute讲解
Jan 29 PHP
PHP CURL中传递cookie的方法步骤
May 09 PHP
PHP数组基本用法与知识点总结
Jun 02 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
javascript中万恶的function实例分析
2011/05/25 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
Python使用Scrapy爬取妹子图
2015/05/28 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
2020/03/30 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
洛杉矶时尚女装系列:J.ING US
2019/03/17 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
XML文档面试题
2015/08/05 面试题
应用艺术专业个人的自我评价
2014/01/03 职场文书
交通安全演讲稿
2014/01/07 职场文书
水果超市创业计划书
2014/01/27 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
教师群众路线心得体会
2014/11/04 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL