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 15 PHP
php 仿Comsenz安装效果代码打包提供下载
May 09 PHP
基于empty函数的判断详解
Jun 17 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
Jun 18 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
Apr 30 PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
Aug 01 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 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
PHP分页显示制作详细讲解
2006/10/09 PHP
PHP Pear 安装及使用
2009/03/19 PHP
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
一段实用的php验证码函数
2016/05/19 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
javascript不同页面传值的改进版
2008/09/30 Javascript
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
浏览器常用高宽的jquery插件
2011/02/24 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
Python列表切片操作实例总结
2019/02/19 Python
django admin 添加自定义链接方式
2020/03/11 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
毕业生求职简历的自我评价
2013/10/07 职场文书
入团者的自我评价分享
2013/12/02 职场文书
民主生活会剖析材料
2014/09/30 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL
MySQL 数据库范式化设计理论
2022/04/22 MySQL