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脚本的10个技巧(1)
Oct 09 PHP
几种显示数据的方法的比较
Oct 09 PHP
php基础知识:函数基础知识
Dec 13 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 PHP
教你识别简单的免查杀PHP后门
Sep 13 PHP
CodeIgniter配置之routes.php用法实例分析
Jan 19 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
Smarty简单生成表单元素的方法示例
May 23 PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 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和AJAX创建RSS聚合器的代码
2007/03/13 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
python实现SMTP邮件发送功能
2020/06/16 Python
python生成随机图形验证码详解
2017/11/08 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
pycharm创建一个python包方法图解
2019/04/10 Python
Django和Flask框架优缺点对比
2019/10/24 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
python实现自动打卡的示例代码
2020/10/10 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
canvas使用注意点总结
2013/07/19 HTML / CSS
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
自我鉴定的范文
2013/10/03 职场文书
运动会加油稿20字
2014/11/15 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
考试后的感想
2015/08/07 职场文书
导游词之海南天涯海角
2019/12/05 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
MySQL窗口函数的具体使用
2021/11/17 MySQL
以下牛机,你有几个
2022/04/05 无线电