php无法捕获异常怎么办

互联网 20-9-1

解决php无法捕获异常的方法:首先使用函数【try,catch】输出异常完整信息;然后定义异常,代码为【catch(FileExistException $e)】;最后重抛异常给上层,代码为【catch(Exception $e)】。

【相关学习推荐:php图文教程

解决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()."\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编程(视频)

以上就是php无法捕获异常怎么办的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 捕获异常
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:php如何生成不重复的序列号

相关资讯