问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php代码如何捕获不可识别的异常

发布网友 发布时间:2022-04-28 04:18

我来回答

2个回答

懂视网 时间:2022-04-28 08:40

解决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()."
"; //返回用户自定义的异常信息
 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;  //重掷异常
 }
}
?>

相关学习推荐:php编程(视频)

热心网友 时间:2022-04-28 05:48

try-cache
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么样才能聚财 花呗额度怎么提升最快? 还在为word排版而发愁?word的实验报告模板&amp;word数学建模模板免费领... 如何鉴定骨伤是新伤和陈旧伤 夕阳无限好只是近黄昏古诗 ...其他人都无问题,确定网络连接无问题,请问是什么原因? 描写花朵从花蕾到开放的句子 描写花蕾的优美句子 ...毒毛和鲜艳色斑,一般食虫鸟不敢捕食,这在生物学上属于…( )A.保护... 安徽名人出身地 php 将变量转化为数组 array数组中 数组为php变量,怎么写 php中怎么把数组的多个变量组合之后赋值给另外一个变量? PHP数组中的元素遍历出来如何给每个值赋一个变量。 PHP如何在调用数组时数组名为变量? php如何把多个数组合成变量 PHP中 如何把一个二维数组的值作为一个变量 PHP 如何把一个数组array(a=&gt;1,b=&gt;2);改写成变量$a=1;$b=2; 以便用来插入数据库 php当中,如何将数组合并成变量呢? php中把一个数组中的几个值取出赋值给一个变量怎么写 PHP点击浏览器关闭按钮时候,怎么清除session值 php直接关闭页面怎么注销SESSION PHP中可以通过session id删除服务器上某个session吗 PHP中的SESSION的删除为什么要有$_SESSION=array() PHP中,怎么才能关闭浏览器后自动销毁session? PHP如何在用户关闭时浏览器自动清除session php点击按钮删除session[&#39;history&#39;]中的数据; php如何清除session用unset()或session_start()或用isset()判断清除不了,怎么办?求大师 php 关闭浏览器后清空session iis下php中的SESSION无法删除 php try 为什么不捕获异常 PHP 异常处理 总出现致命错误 无法捕获异常 请叫关于php异常的问题,请大神们不吝赐教 php 怎么捕获所有的异常? PHP异常处理的疑惑 这个php错误是什么,怎么搞? 新人求教,请问Thinkphp 中怎么捕获异常,自己进行处理 PHP TRY CATCH具体求解 python和php使用selenium捕获超时异常无法继续问题 php捕获不到MySQL Query Error异常 PHP异常处理的一些问题 php中怎么捕获数据库连接错误语句? PHP 为什么只能用 throw 才能 catch 异常 php依次生成数字 1到10,每次生成一个数字,不重复 不循环,谢谢 请教PHP如何自动递增流水号不重复。 用PHP如何生成50万个不重复的8位阿拉伯数字 PHP弹出提示框并跳转到新页面即重定向到新页面 php怎样实现转向页面 PHP重定向页面的几个方法 如何使用PHP让网页直接跳转