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高手?学会“懒惰”的编程
Dec 05 PHP
php 删除无限级目录与文件代码共享
Nov 22 PHP
php 设计模式之 单例模式
Dec 19 PHP
使用array mutisort 实现按某字段对数据排序
Jun 18 PHP
php代码书写习惯优化小结
Jun 20 PHP
php查找任何页面上的所有链接的方法
Dec 03 PHP
PHP+jQuery 注册模块开发详解
Oct 14 PHP
php中fsockopen用法实例
Jan 05 PHP
php多线程实现方法及用法实例详解
Oct 26 PHP
PHP实现根据时间戳获取周几的方法
Feb 26 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
php 访问oracle 存储过程实例详解
Jan 08 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
提取HTML标签
2006/10/09 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
初识PHP
2014/09/28 PHP
php发送邮件的问题详解
2015/06/22 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
javascript String 的扩展方法集合
2008/06/01 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
Javascript验证方法大全
2015/09/21 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
微信小程序进入广告实现代码实例
2019/09/19 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
Python中文件遍历的两种方法
2014/06/16 Python
Python卸载模块的方法汇总
2016/06/07 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
Python代码实现KNN算法
2017/12/20 Python
python2与python3共存问题的解决方法
2018/09/18 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
请说出几个常用的异常类
2013/01/08 面试题
培训主管的岗位职责
2013/11/23 职场文书
批评与自我批评发言稿
2014/10/15 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python