`

php5中的异常小结

    博客分类:
  • PHP
PHP 
阅读更多
   php5中有了异常了,比以前有大的改进,下面笔记之.
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);
 }
}
?>

3  扩展异常,即自定义异常

<?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中异常处理方法小结

    当异常被触发时,通常会发生:在PHP5中添加了类似于其它语言的错误异常处理模块。在 PHP代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在...

    php网络开发完全手册

    1.7 小结 23 第2章 PHP的基础语法 24 2.1 语言构成与工作原理 24 2.2 常量与变量 25 2.2.1 常量的定义 25 2.2.2 变量的定义 26 2.2.3 变量的作用域 27 2.2.4 动态变量 29 2.3 运算符和关键字 29 2.4 流程控制语法 30...

    php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACEeval&#40;&#41;d code error

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

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    9-10 5.php异常处理 9-10 6.php进阶预热篇-php执行流程时序图 9-10 7.http协议深度剖析①-http请求详解 防盗链技术 9-13 0.回顾 9-13 1.http协议深度剖析②-http响应详解(302 304码运用) 9-13 2.http协议深度剖析③-...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    9-10 5.php异常处理 9-10 6.php进阶预热篇-php执行流程时序图 9-10 7.http协议深度剖析①-http请求详解 防盗链技术 9-13 0.回顾 9-13 1.http协议深度剖析②-http响应详解(302 304码运用) 9-13 2.http协议深度剖析③-...

    (全)传智播客PHP就业班视频完整课程

    9-10 5.php异常处理 9-10 6.php进阶预热篇-php执行流程时序图 9-10 7.http协议深度剖析①-http请求详解 防盗链技术 9-13 0.回顾 9-13 1.http协议深度剖析②-http响应详解(302 304码运用) 9-13 2.http协议深度剖析③-...

    php5.6.x到php7.0.x特性小结

    本文总结分析了php5.6.x到php7.0.x特性。分享给大家供大家参考,具体如下: ...如果不按规定传参会返回异常 3.null合并运算符 null合并运算符 (??) ,等同于三元运算符 name=name=_GET['name'] ?? test;e

    史上最全传智播客PHP就业班视频课,8月份视频

    9-10 5.php异常处理 9-10 6.php进阶预热篇-php执行流程时序图 9-10 7.http协议深度剖析①-http请求详解 防盗链技术 9-13 0.回顾 9-13 1.http协议深度剖析②-http响应详解(302 304码运用) 9-13 2.http协议深度剖析③-...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    9-10 5.php异常处理 9-10 6.php进阶预热篇-php执行流程时序图 9-10 7.http协议深度剖析①-http请求详解 防盗链技术 9-13 0.回顾 9-13 1.http协议深度剖析②-http响应详解(302 304码运用) 9-13 2.http协议深度剖析③-...

    php函数的常用方法及注意之处小结

    function fun_cutstr($str,$str_width=0,$str_pad=’…’){ // 每个函数都得考虑一些异常的情况, 比如函数引入不对, 为0,为false等. // 由于外部期望返回截取字符后的字符,所以就算此函数不工作,也应该将它传进来的...

    Laravel中常见的错误与解决方法小结

    通过查询 Laravel 源代码,可以确认异常是在 setPdo 方法中抛出的:  &lt;?php public function setPdo($pdo) { if ($this-&gt;transactions &gt;= 1) { throw new RuntimeException(" Can't swap PDO instance ...

    ThinkPHP实战(夏磊)

    1.7 小结 11 第2章 配 置 12 2.1 配置类型 13 2.1.1默认配置 13 2.1.2公共配置 13 2.1.3模式配置 13 2.1.4调试配置 14 2.1.5场景配置 14 2.1.6模块配置 14 2.1.7扩展配置 14 2.1.8动态配置 15 2.2 配置...

    overdrive-php-client:overdrive.com 的 API 客户端

    超速 PHP 客户端OverDrive PHP 客户端提供了一种使用 overdrive.com 查询图书馆和读者信息、结帐和保留、检查可用性和下载标题的简单方法。 OverDrive 在制作强大、易于使用的 api 方面做得非常出色,但他们没有提供...

    jquery插件使用方法大全

    jQuery 1.2.6(2008年5月):这一版主要是将Brandon Aaron开发的流行的Dimensions插件的功能移植到了核心库中。 jQuery 1.3(2009年1月):这一版使用了全新的选择符引擎Sizzle,库的性能也因此有了极大提升。这一...

Global site tag (gtag.js) - Google Analytics