php5编程中的异常处理详细方法介绍


Posted in PHP onJuly 29, 2008

1 首先是try,catch 

<?php 
$path = "D:\\\\in.txt"; 
try //检测异常 

file_open($path); 

catch(Exception $e) //捕获异常 

echo $e->getMessage(); 

function file_open($path) 

if(!file_exists($path)) //如果文件无法找到,抛出异常对象 

throw new Exception("文件无法找到", 1); 

if(!fopen($path, "r")) //如果文件无法打开,抛出异常对象 

throw new Exception("文件无法打开", 2); 


?> 
注意用$e->getMessage()输出异常信息. 

2 输出异常完整信息 

<?php 
$path = "D:\\\\in.txt"; 

try 

file_open($path); //尝试打开文件 

catch(Exception $e) 

echo "异常信息:".$e->getMessage()."\\n"; //返回用户自定义的异常信息 
echo "异常代码:".$e->getCode()."\\n"; //返回用户自定义的异常代码 
echo "文件名:".$e->getFile()."\\n"; //返回发生异常的PHP程序文件名 
echo "异常代码所在行".$e->getLine()."\\n"; //返回发生异常的代码所在行的行号 
echo "传递路线:"; 
print_r($e->getTrace()); //以数组形式返回跟踪异常每一步传递的路线 
echo $e->getTraceAsString(); //返回格式化成字符串的getTrace函数信息 

function file_open($path) 

if(!file_exists($path)) //如果文件不存在,则抛出错误 

throw new Exception("文件无法找到", 1); 

if(!fopen($path, "r")) 

throw new Exception("文件无法打开", 2); 


?> 

 扩展异常,即自定义异常 

<?php 
class FileExistsException extends Exception{} //用于处理文件不存在异常的类 
class FileOpenException extends Exception{} //用于处理文件不可读异常的类 

$path = "D:\\\\in.txt"; 

try 

file_open($path); 

catch(FileExistsException $e) //如果产生FileExistsException异常则提示用户确认文件位置 

echo "程序在运行过程中发生了异常:".$e->getMessage()."\\n"; 
echo "请确认文件位置。"; 

catch(FileOpenException $e) //如果产生FileOpenException异常则提示用户确认文件的可读性 

echo "程序在运行过程中发生了异常:".$e->getMessage()."\\n"; 
echo "请确认文件的可读性。"; 

catch(Exception $e) 

echo "[未知异常]"; 
echo "异常信息:".$e->getMessage()."\\n"; //返回用户自定义的异常信息 
echo "异常代码:".$e->getCode()."\\n"; //返回用户自定义的异常代码 
echo "文件名:".$e->getFile()."\\n"; //返回发生异常的PHP程序文件名 
echo "异常代码所在行".$e->getLine()."\\n"; //返回发生异常的代码所在行的行号 
echo "传递路线:"; 
print_r($e->getTrace()); //以数组形式返回跟踪异常每一步传递的路线 
echo $e->getTraceAsString(); //返回格式化成字符串的getTrace函数信息 

function file_open($path) 

if(!file_exists($path)) 

throw new FileExistsException("文件无法找到", 1); //抛出FileExistsException异常对象 

if(!fopen($path, "r")) 

throw new FileOpenException("文件无法打开", 2); //抛出FileOpenException异常对象 



?> 

4 重抛异常给上层 

<?php 
class FileExistsException extends Exception{} //用于处理文件不存在异常的类 
class FileOpenException extends Exception{} //用于处理文件不可读异常的类 

$path = "D:\\\\in.txt"; 

try 

file_open($path); 

catch(FileExistsException $e) //如果产生FileExistsException异常则提示用户确认文件位置 

echo "程序在运行过程中发生了异常:".$e->getMessage()."\\n"; 
echo "请确认文件位置。"; 

catch(FileOpenException $e) //如果产生FileOpenException异常则提示用户确认文件的可读性 

echo "程序在运行过程中发生了异常:".$e->getMessage()."\\n"; 
echo "请确认文件的可读性。"; 

catch(Exception $e) 

echo "[未知异常]"; 
echo "异常信息:".$e->getMessage()."\\n"; //返回用户自定义的异常信息 
echo "异常代码:".$e->getCode()."\\n"; //返回用户自定义的异常代码 
echo "文件名:".$e->getFile()."\\n"; //返回发生异常的PHP程序文件名 
echo "异常代码所在行".$e->getLine()."\\n"; //返回发生异常的代码所在行的行号 
echo "传递路线:"; 
print_r($e->getTrace()); //以数组形式返回跟踪异常每一步传递的路线 
echo $e->getTraceAsString(); //返回格式化成字符串的getTrace函数信息 

function file_open($path) 

try 

if(!file_exists($path)) 

throw new FileExistsException("文件无法找到", 1); 

if(!fopen($path, "r")) 

throw new FileOpenException("文件无法打开", 2); 


catch(Exception $e) //捕获异常 

echo "file_open函数在运行过程中出现异常"; 
throw $e; //重掷异常 


?>

PHP 相关文章推荐
不用数据库的多用户文件自由上传投票系统(3)
Oct 09 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
PHP 文件上传全攻略
Apr 28 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
解析PHP多种序列化与反序列化的方法
Jun 06 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
PHP中date与gmdate的区别及默认时区设置
May 12 PHP
ThinkPHP CURD方法之where方法详解
Jun 18 PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
Nov 25 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
php实现银联商务公众号+服务窗支付的示例代码
Oct 12 PHP
php intval的测试代码发现问题
Jul 27 #PHP
php在线打包程序源码
Jul 27 #PHP
php对gzip文件或者字符串解压实例参考
Jul 25 #PHP
php+mysql写的简单留言本实例代码
Jul 25 #PHP
简单示例AJAX结合PHP代码实现登录效果代码
Jul 25 #PHP
PHP4中session登录页面的应用
Jul 25 #PHP
PHP 表单提交给自己
Jul 24 #PHP
You might like
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
php fread读取文件注意事项
2016/09/24 PHP
thinkphp5引入公共部分header、footer的方法详解
2018/09/14 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
VueJS全面解析
2016/11/10 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
彻底理解js面向对象之继承
2018/02/04 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
Python最基本的输入输出详解
2015/04/25 Python
python登录豆瓣并发帖的方法
2015/07/08 Python
python tkinter组件摆放方式详解
2019/09/16 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
python构造函数init实例方法解析
2020/01/19 Python
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
2014厂务公开实施方案
2014/02/17 职场文书
乳制品整治工作方案
2014/05/29 职场文书
消防志愿者活动方案
2014/08/23 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
学习群众路线的心得体会
2014/11/05 职场文书
单位考核聘任报告
2015/03/02 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python