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中的CMS的涵义
Mar 11 PHP
php中字符串和正则表达式详解
Oct 23 PHP
PHP中你应该知道的require()文件包含的正确用法
Jun 12 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
PHP微信开发之文本自动回复
Jun 23 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
Feb 18 PHP
php支付宝APP支付功能
Jul 29 PHP
php array_chunk()函数用法与注意事项
Jul 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
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
PHP编码规范的深入探讨
2013/06/06 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
javascript编程起步(第一课)
2007/01/10 Javascript
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
详解.vue文件解析的实现
2018/06/11 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
回调函数的意义以及python实现实例
2017/06/20 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
django和vue实现数据交互的方法
2019/08/21 Python
python turtle 绘制太极图的实例
2019/12/18 Python
python3爬取torrent种子链接实例
2020/01/16 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
简历中自我评价怎么写
2014/02/12 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
三下乡活动心得体会
2016/01/23 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server