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 开发环境配置(测试开发环境)
Apr 28 PHP
PHP 图片上传实现代码 带详细注释
Apr 29 PHP
一篇有意思的技术文章php介绍篇
Oct 26 PHP
php中关于普通表单多文件上传的处理方法
Mar 25 PHP
thinkphp特殊标签用法概述
Nov 24 PHP
php中fgetcsv()函数用法实例
Nov 28 PHP
php结合正则获取字符串中数字
Jun 19 PHP
php获取汉字拼音首字母的方法
Oct 21 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
分享PHP守护进程类
Dec 30 PHP
PHP 微信扫码支付源代码(推荐)
Nov 03 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 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
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
js call方法详细介绍(js 的继承)
2013/11/18 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
独特的python循环语句
2016/11/20 Python
Golang与python线程详解及简单实例
2017/04/27 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
python对csv文件追加写入列的方法
2019/08/01 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
动态设置django的model field的默认值操作步骤
2020/03/30 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
物理系毕业生自荐信
2013/11/01 职场文书
中学教师师德承诺书
2014/05/23 职场文书
法人代表任命书范本
2014/06/05 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
化验员岗位职责
2015/02/14 职场文书
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS