• php 异常捕获


    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()."
    ";   //返回用户自定义的异常信息
     echo "异常代码:".$e->getCode()."
    ";      //返回用户自定义的异常代码
     echo "文件名:".$e->getFile()."
    ";                    //返回发生异常的PHP程序文件名
     echo "异常代码所在行".$e->getLine()."
    ";               //返回发生异常的代码所在行的行号
     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()."
    ";
     echo "请确认文件位置。";
    }
    catch(FileOpenException $e)    //如果产生FileOpenException异常则提示用户确认文件的可读性
    {
     echo "程序在运行过程中发生了异常:".$e->getMessage()."
    ";
     echo "请确认文件的可读性。";
    }
    catch(Exception $e)
    {
     echo "[未知异常]";
     echo "异常信息:".$e->getMessage()."
    ";   //返回用户自定义的异常信息
     echo "异常代码:".$e->getCode()."
    ";      //返回用户自定义的异常代码
     echo "文件名:".$e->getFile()."
    ";                    //返回发生异常的PHP程序文件名
     echo "异常代码所在行".$e->getLine()."
    ";    //返回发生异常的代码所在行的行号
     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()."
    ";
     echo "请确认文件位置。";
    }
    catch(FileOpenException $e)    //如果产生FileOpenException异常则提示用户确认文件的可读性
    {
     echo "程序在运行过程中发生了异常:".$e->getMessage()."
    ";
     echo "请确认文件的可读性。";
    }
    catch(Exception $e)
    {
     echo "[未知异常]";
     echo "异常信息:".$e->getMessage()."
    ";   //返回用户自定义的异常信息
     echo "异常代码:".$e->getCode()."
    ";      //返回用户自定义的异常代码
     echo "文件名:".$e->getFile()."
    ";                    //返回发生异常的PHP程序文件名
     echo "异常代码所在行".$e->getLine()."
    ";               //返回发生异常的代码所在行的行号
     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;         //重掷异常
     }
    }
    ?>
  • 相关阅读:
    太有才了!街头创意涂鸦手绘图片欣赏【上篇】
    设计前沿:25款精妙的 iOS 应用程序图标
    Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十八】
    神奇的世界!那些使用食物创造出来的景观【组图】
    Screenfly – 各种设备的屏幕和分辨率下快速测试网站
    经典网页设计:30个新鲜出炉的扁平化网站设计《下篇》
    40款很奇异的名片设计,吸引你的眼球《下篇》
    推荐25款实用的 HTML5 前端框架和开发工具【下篇】
    CSS3 Animation Cheat Sheet:实用的 CSS3 动画库
    今日推荐:12个获取手机应用程序设计灵感的网站
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/3726788.html
Copyright © 2020-2023  润新知