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操作Access类(PHP+ODBC+Access)
Jan 02 PHP
PHP之变量、常量学习笔记
Mar 27 PHP
常用的php对象类型判断
Aug 27 PHP
php Static关键字实用方法
Jun 04 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
php中session退出登陆问题
Feb 27 PHP
php文件服务实现虚拟挂载其他目录示例
Apr 17 PHP
2个比较经典的PHP加密解密函数分享
Jul 01 PHP
PHP 无限级分类
May 04 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 PHP
PHP7 其他语言层面的修改
Mar 09 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操作excel文件 基于phpexcel
2010/07/02 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
php实现的递归提成方案实例
2015/11/14 PHP
php连接mysql数据库
2017/03/21 PHP
javascript针对DOM的应用分析(二)
2012/04/15 Javascript
javascript控制swfObject应用介绍
2012/11/29 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
gearman的安装启动及python API使用实例
2014/07/08 Python
python编码最佳实践之总结
2016/02/14 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python实现报表自动化详解
2017/11/16 Python
python实现冒泡排序算法的两种方法
2018/03/10 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
Python 学习教程之networkx
2019/04/15 Python
Python Django框架实现应用添加logging日志操作示例
2019/05/17 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
什么是网络协议
2016/04/07 面试题
会计出纳员的自我评价
2014/01/15 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
党性教育心得体会
2014/09/03 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python
如何Python使用re模块实现okenizer
2022/04/30 Python