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 相关文章推荐
实现树状结构的两种方法
Oct 09 PHP
模仿OSO的论坛(四)
Oct 09 PHP
PHP中的正规表达式(一)
Oct 09 PHP
Ajax PHP简单入门教程代码
Apr 25 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
php的POSIX 函数以及进程测试的深入分析
Jun 03 PHP
PHP SESSION的增加、删除、修改、查看操作
Mar 20 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
php中preg_match的isU代表什么意思
Oct 01 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 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
PHPMailer 中文使用说明小结
2010/01/22 PHP
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
jQuery的三种$()
2009/12/30 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
2017/04/01 jQuery
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
[50:50]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第一场 12.10
2020/12/13 DOTA
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
python删除特定文件的方法
2015/07/30 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
Python用input输入列表的实例代码
2020/02/07 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
Born鞋子官网:Born Shoes
2017/04/06 全球购物
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
新员工欢迎词
2014/01/12 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
电视新闻稿
2015/07/17 职场文书