zoukankan      html  css  js  c++  java
  • 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;         //重掷异常
     }
    }
    ?>
  • 相关阅读:
    MySQL字符集 utf8 和 utf8mb4 区别及排序规则 general_ci 和 unicode_ci 和 bin 的区别
    tp5定时任务
    PHP7.X连接SQLSERVER数据库(CENTOS7)
    php 连接sqlserver
    接口踩坑:Status (blocked:other)
    php 一些常用函数
    tp5支付宝和微信支付
    php 数组相关方法的一些实际妙用
    MySQL如何利用索引优化ORDER BY排序语
    composer命令介绍之install和update及其区别
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/3726788.html
Copyright © 2011-2022 走看看