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 相关文章推荐
一个查看session内容的函数
Oct 09 PHP
PHP获取网站域名和地址的代码
Aug 17 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
Aug 23 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
php删除数组中重复元素的方法
Dec 22 PHP
Twig模板引擎用法入门教程
Jan 20 PHP
PHP实现163邮箱自动发送邮件
Mar 29 PHP
php短信接口代码
May 13 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
Yii框架弹出框功能示例
Jan 07 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 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
Apache设置虚拟WEB
2006/10/09 PHP
玩转虚拟域名◎+ .
2006/10/09 PHP
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
使用PHP开发留言板功能
2019/11/19 PHP
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
2017/12/07 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
python提取页面内url列表的方法
2015/05/25 Python
python3编码问题汇总
2016/09/06 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
关于python 跨域处理方式详解
2020/03/28 Python
python程序需要编译吗
2020/06/19 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
学校师德师风自我剖析材料
2014/09/29 职场文书
建筑工地文明标语
2014/10/09 职场文书
开学第一天的感想
2015/08/10 职场文书
创业计划书之水果店
2019/07/18 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL