视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
php无法捕获异常怎么办
2020-11-02 18:25:27 责编:小采
文档


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

下载本文
显示全文
专题