`
mywebcode
  • 浏览: 998137 次
文章分类
社区版块
存档分类
最新评论

PHP5中的异常处理详解

 
阅读更多

首先是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()输出异常信息.

输出异常完整信息

﹤?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异常对象 
} 
} 
?﹥

重抛异常给上层

﹤?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异常类及异常处理操作。分享给大家供大家参考,具体如下: 异常处理归类于错误处理,PHP从5.1.0开始增加了Exception异常处理类。 一、异常处理 PHP 异常处理与Java相似,都使用try、throw、catch...

    php PDO异常处理详解

    异常处理: PHP:默认为直接报错 MYSQL:默认为静默模式,错就错,不报错 PDO:默认为静默模式,错就错,不报错 以前,当PHP碰到错误的时候,会直接报错,错误处理会变得相当麻烦。后来,当错误发生之后,会将错误...

    关于ThinkPHP中的异常处理详解

    和PHP默认的异常处理不同,ThinkPHP抛出的不是单纯的错误信息,而是一个人性化的错误页面,下面这篇文章主要给大家介绍了关于ThinkPHP中异常处理的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

    YII Framework教程之异常处理详解

    YII框架封装了PHP的异常,让异常处理起来更简单。 使用 YII处理错误和异常的配置方法: 你可以在入口文件中定义YII_ENABLE_ERROR_HANDLER和YII_ENABLE_EXCEPTION_HANDLER为true. 引发异常的情况 1.触发onError或者...

    php中try catch捕获异常实例详解

    PHP5添加了类似于其它语言的异常处理模块。在 PHP 代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。(注:一定要先抛才能获取) 需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常...

    基于PHP7错误处理与异常处理方法(详解)

    不同于传统(PHP 5)的错误报告机制,现在大多数错误被作为 Error 异常抛出。 这种 Error 异常可以像 Exception 异常一样被第一个匹配的 try / catch 块所捕获。如果没有匹配的 catch 块,则调用异常处理函数(事先...

    php抛出异常与捕捉特定类型的异常详解

    异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。 当异常被触发时,通常会发生:  当前代码状态被保存  代码执行被切换到预定义的异常处理器函数  根据情况,处理器也许会...

    PHP使用观察者模式处理异常信息的方法详解

    主要介绍了PHP使用观察者模式处理异常信息的方法,结合实例形式详细分析了php观察者模式处理异常信息相关原理、实现方法及操作注意事项,需要的朋友可以参考下

    php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACEeval()d code error

    您可能感兴趣的文章:php中try catch捕获异常实例详解PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法PHP的异常处理类Exception的使用及说明php Try Catch异常测试PHP如何抛出异常处理错误php中...

    PHP的全局错误处理详解

    PHP的全局错误处理,在开发项目的时候很有用,可以帮助开发者快速定位一些问题,提高工作效率。默认情况下,全局错误会直接输出,但是最近开发时使用的一个框架库对全局错误处理进行了设定,导致很多错误信息没有...

    python中异常捕获方法详解

    在Python中处理异常使用的是try-except代码块,try-except代码块放入让python执行的操作,同时告诉python程序如果发生了异常该怎么办,try-except这个功能其实很多入门书籍中都放到了高级篇幅里,在入门的时候一般...

Global site tag (gtag.js) - Google Analytics