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 session有效期问题
Apr 26 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
解析php中curl_multi的应用
Jul 17 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
php教程之phpize使用方法
Feb 12 PHP
php cli配置文件问题分析
Oct 15 PHP
php字符串的替换,分割和连接方法
May 23 PHP
nginx下安装php7+php5
Jul 31 PHP
PHP框架自动加载类文件原理详解
Jun 06 PHP
Laravel使用支付宝进行支付的示例代码
Aug 16 PHP
PHP后期静态绑定实例浅析
Dec 21 PHP
详解PHP PDO简单教程
May 28 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
PHP4实际应用经验篇(3)
2006/10/09 PHP
PHP教程 基本语法
2009/10/23 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
Web开发之JavaScript
2012/03/29 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
javascript实现tab切换特效
2015/11/12 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
python 对key为时间的dict排序方法
2018/10/17 Python
Python 字典中的所有方法及用法
2020/06/10 Python
Python 如何展开嵌套的序列
2020/08/01 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
服务之星事迹材料
2014/05/03 职场文书
cf战队收人口号
2014/06/21 职场文书
银行稽核岗位职责
2015/04/13 职场文书
夫妻吵架保证书
2015/05/08 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python