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&amp;mysql(一)
Oct 09 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 PHP
php var_export与var_dump 输出的不同
Aug 09 PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
PHP中的替代语法介绍
Jan 09 PHP
php通过Chianz.com获取IP地址与地区的方法
Jan 14 PHP
利用PHP将部分内容用星号替换
Apr 21 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
Nov 06 PHP
CI框架(CodeIgniter)操作redis的方法详解
Jan 25 PHP
PHP中国际化的字符串排序和比较对象详解
Aug 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
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
2011/07/26 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
jQuery插件分享之分页插件jqPagination
2014/06/06 Javascript
js匿名函数的调用示例(形式多种多样)
2014/08/20 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
深入理解Python3中的http.client模块
2017/03/29 Python
Python操作mongodb的9个步骤
2018/06/04 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
python实现键盘输入的实操方法
2019/07/16 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
Python的历史与优缺点整理
2020/05/26 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
python开发入门——set的使用
2020/09/03 Python
举例讲解Python装饰器
2020/12/24 Python
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
中学家长会邀请函
2014/01/17 职场文书
善意的谎言事例
2014/02/15 职场文书
工程技术员岗位职责
2014/03/02 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL
MySQL通过binlog恢复数据
2021/05/27 MySQL