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实时显示输出
Oct 02 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
May 02 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
php动态生成缩略图并输出显示的方法
Apr 20 PHP
PHP二维数组去重实例分析
Nov 18 PHP
PHP中include()与require()的区别说明
Feb 14 PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
PHP实现单例模式建立数据库连接的方法分析
Feb 11 PHP
php实现JWT验证的实例教程
Nov 26 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 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
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
使用PHP实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
2011/10/09 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
python操作MongoDB基础知识
2013/11/01 Python
Python进程间通信用法实例
2015/06/04 Python
python使用正则表达式替换匹配成功的组
2017/11/17 Python
基于Django实现日志记录报错信息
2019/12/17 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
适用于所有创业者的创业计划书
2014/02/05 职场文书
大一新生学期自我评价
2014/04/09 职场文书
新闻发布会活动策划方案
2014/09/15 职场文书
安全伴我行主题班会
2015/08/13 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技
python 实现图片特效处理
2022/04/03 Python
MySQL数据库配置信息查看与修改方法详解
2022/06/25 MySQL