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中基本符号及使用方法
Mar 23 PHP
PHP实现异步调用方法研究与分享
Oct 27 PHP
PHP中计算字符串相似度的函数代码
Dec 29 PHP
php数组编码转换示例详解
Mar 11 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
Apr 29 PHP
destoon实现调用热门关键字的方法
Jul 15 PHP
PHP实现上传文件并存进数据库的方法
Jul 16 PHP
9个比较实用的php代码片段
Mar 15 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
PHP两个n位的二进制整数相加问题的解决
Aug 26 PHP
php根据命令行参数生成配置文件详解
Mar 15 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 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 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
解密效果
2006/06/23 Javascript
javascript CSS画图之基础篇
2009/07/29 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
基于Axios 常用的请求方法别名(详解)
2018/03/13 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
Canvas图片分割效果的实现
2019/07/29 HTML / CSS
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
广场舞大赛策划方案
2014/05/31 职场文书
活动总结格式
2014/08/30 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS
MySQL数据库事务的四大特性
2022/04/20 MySQL