找回密码
 立即注册
搜索
查看: 1823|回复: 0

[面向对象] 【OOP代码示例】异常处理

[复制链接]

581

主题

110

回帖

4066

积分

管理员

积分
4066

众神之神

发表于 2016-1-27 18:17:14 | 显示全部楼层 |阅读模式
系统自带的异常处理
  1. <?php
  2. //try分支 在这里进行代码测试,如果有问题就要抛出一个异常,如果没有问题就继续执行
  3. try{
  4.     $num = 2;
  5.     if($num == 1){
  6.         echo "success";
  7.     }else{
  8.         //throw抛出异常对象
  9.         //Exception类有两个参数
  10.         //第一个参数:异常信息
  11.         //第二个参数:异常代码
  12.         throw new Exception("变量num不等于1");
  13.     }
  14. //catch分支 就是捕捉异常对象
  15. //参数:异常对象,使用的是类型约束,只能捕捉由Exception类实例化来的对象
  16. }catch(Exception $e){
  17.     echo "错误文件为:";
  18.     echo $e -> getFile();               //得到发生异常的文件
  19.     echo ",发生错误的行为:";         
  20.     echo $e -> getLine();               //得到发生异常的行
  21.     echo ",错误代码为:";
  22.     echo $e -> getCode();               //得到异常代码
  23.     echo ",错误信息为:";
  24.     echo $e -> getMessage();            //得到异常信息
  25.     //echo $e;
  26. }
复制代码

自定义异常处理
  1. <?php
  2. //自定义异常类时要继承系统的异常处理类
  3. class myException extends Exception{

  4.     //可以自已定义异常处理流程
  5.     public function getAllInfo(){
  6.         return "异常发生的文件为:{$this -> getFile()},异常发生的行为:{$this -> getLine()},异常的信息为:{$this->getMessage()},异常的代码为:{$this -> getCode()}";
  7.     }
  8. }

  9. try{
  10.     if($_GET['num'] == 5){
  11.         throw new myException("这是一个自定义的异常",123456);
  12.     }
  13.     echo "success";
  14. //捕捉时注意类型约束为自已定义的异常处理类名
  15. }catch(myException $e){
  16.     echo $e -> getAllInfo();
  17. }
复制代码

捕捉多个异常
  1. <?php
  2. class myException extends Exception{
  3.    
  4.     public function getInfo(){
  5.         return $this -> getMessage();
  6.     }
  7. }

  8. try{
  9.     //捕捉多个异常处理要抛出多个异常对象,不能是由一个异常处理类实例化的对象
  10.     if($_GET['num'] == 1){
  11.         throw new myException("这是自定义的异常处理");
  12.     }elseif($_GET['num'] == 2){
  13.         throw new Exception("这是系统的异常处理");
  14.     }
  15.     echo "success";
  16. //在捕捉时系统的异常处理分支要放到最后
  17. //注意类型约束
  18. }catch(myException $e){
  19.     echo $e -> getInfo();
  20.     echo "111";
  21. }catch(Exception $e){
  22.     echo $e -> getMessage();
  23.     echo "222";
  24. }
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|十三博客 ( 鲁ICP备2023000528号 )

GMT+8, 2026-6-1 17:29 , Processed in 0.071087 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表