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 相关文章推荐
自定义PHP分页函数
Oct 09 PHP
PHP 日期加减的类,很不错
Oct 10 PHP
PHP开启gzip页面压缩实例代码
Mar 11 PHP
PHP中foreach循环中使用引用要注意的地方
Jan 02 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
php在程序中将网页生成word文档并提供下载的代码
Oct 09 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
php 过滤英文标点符号及过滤中文标点符号代码
Jun 12 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
PHP7常量数组用法分析
Sep 26 PHP
PHP超全局变量实现原理及代码解析
Sep 01 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
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
JavaScript实现复制文章自动添加版权
2016/08/02 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
Python中如何添加自定义模块
2020/06/09 Python
python如何实时获取tcpdump输出
2020/09/16 Python
python Paramiko使用示例
2020/09/21 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
如何使用Pytorch搭建模型
2020/10/26 Python
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
工程业务员岗位职责
2013/12/31 职场文书
最新会计专业求职信范文
2014/01/28 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
士兵突击观后感
2015/06/16 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书