扩展异常,即自定义异常

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 重抛异常给上层

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的异常详解,php5异常处理详解_php相关推荐

  1. 多重句柄怎么处理_golang异常处理详解

    小熊今天有意外收获,忍不住给大家分享我愉快的心情!昨天中午下楼取外卖的时候被一个同事认出来了,他问我:"是不是[编程三分钟]的作者,文章写的不错". 你知道吗!我当时就是一愣,然后 ...

  2. Python 异常处理 详解

    Python 异常处理 详解 1.错误和异常 1.1 错误 `Error` 1.2 异常 `Exception` 1.3 总结 2.产生异常 3.捕获异常 3.1 语法 3.2 示例 1 3.3 示例 ...

  3. Java 异常的捕获与处理详解 (一)

    Java 异常的捕获与处理详解 (一) 参考文章: (1)Java 异常的捕获与处理详解 (一) (2)https://www.cnblogs.com/revel171226/p/8288832.ht ...

  4. Spring MVC异常处理详解 ExceptionHandler good

    Spring MVC异常处理详解 ExceptionHandler good 参考文章: (1)Spring MVC异常处理详解 ExceptionHandler good (2)https://ww ...

  5. Spring MVC异常处理详解

    Spring MVC异常处理详解 参考文章: (1)Spring MVC异常处理详解 (2)https://www.cnblogs.com/xinzhao/p/4902295.html 备忘一下.

  6. 线程池源代码详解,参数详解

    线程池源代码详解,参数详解 ThreadPoolExecutor 构造函数源代码 public ThreadPoolExecutor(int corePoolSize, int maximumPool ...

  7. ARP命令详解--网络命令详解二

    显示和修改"地址解析协议 (ARP)"缓存中的项目.ARP 缓存中包含一个或多个表,它们用于存储 IP 地址及其经过解析的以太网或令牌环物理地址.计算机上安装的每一个以太网或令牌环 ...

  8. TOPSIS(逼近理想解)算法原理详解与代码实现

    写在前面: 个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣.中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所 ...

  9. php switch case 判断语句,PHP的switch判断语句的“高级”用法详解,switch详解_PHP教程...

    PHP的switch判断语句的"高级"用法详解,switch详解 只所以称为"高级"用法,是因为我连switch的最基础的用法都还没有掌握,so,接下来讲的其实 ...

最新文章

  1. nginx服务器access_log日志分析及配置详解
  2. C# 7中函数多值返回_转自InfoQ
  3. PowerShell-5.网络请求
  4. date比较大小 mybatis_MyBatis Sqlserver日期比较
  5. sylog mysql_25.2 配置使用基于mysql存储日志信息
  6. 写一个 panic blame 机器人
  7. STM32跑分?看看你的能跑多少分!
  8. 微软project服务器搭建,Project Professional 版本(Project Server 2010 设置)
  9. GMQ交易平台大力探索区块链技术,进一步推动产业繁荣
  10. 代码在eclipse下不报错,在doc命令行下报错--jar file和runable jar file
  11. 修改一个CGRect的值
  12. c语言对用下标法二维数组遍历,二维数组遍历:下标法与指针法的较量
  13. 在线正则表达式可视化工具
  14. 第三章:logback 的配置
  15. 厦门IT公司名单及联系方式
  16. 铁路铁鞋UWB定位系统
  17. sqli-labs(38-41)
  18. 信息学奥赛一本通 1196:踩方格 | OpenJudge NOI 2.6 4982:踩方格
  19. Hadoop培训视频教程
  20. Kafka集群搭建(四节点)

热门文章

  1. (010) Linux之I/O重定向
  2. linux7 ntp log,RH254小结(九)rhel7新的ntp对时服务Chrony
  3. C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标
  4. 【数据结构与算法】之深入解析“H指数II”的求解思路与算法示例
  5. App设计灵感之十二组精美的酒店预定App设计案例
  6. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1009:带余除法
  7. 《python从入门到精通》——生成由数字、字母组成的4位验证码
  8. 数据挖掘(data mining),机器学习(machine learning),和人工智能(AI)的区别是什么? 数据科学(data science)和商业分析(business analytics
  9. 【内核驱动】 在内核源码中添加第一个驱动程序
  10. [Qt教程] 第32篇 网络(二)HTTP