zoukankan      html  css  js  c++  java
  • 【PHP的异常处理【完整】】

    PHP的异常处理机制大多数和java的很相似,但是没有finally,而且还可以自定义顶级异常处理器;捕捉到异常信息后,会跳出try-catch块,如果catch中没有跳转的动作,则会继续执行下一条语句。

    简单的异常捕捉:

     1 <?php
     2     function addUser($name)
     3     {
     4         if($name=="zheng")
     5         {
     6             echo "添加成功!<br/>";
     7         }
     8         else
     9         {
    10             throw new Exception("添加失败!<br/>");
    11         }
    12     }
    13 
    14     function updateUser($name)
    15     {
    16         if($name=="song")
    17         {
    18             echo "更新成功!<br/>";
    19         }
    20         else
    21         {
    22             throw new Exception("更新失败!<br/>");
    23         }
    24     }
    25     try
    26     {updateUser("xx");
    27         addUser("zheng");
    28         
    29     }
    30     catch(Exception $e)
    31     {
    32         echo "捕捉到了异常信息!&nbsp;".$e->getMessage();
    33     }
    34     echo "你好";
    35 ?>
    View Code

    通过继承Exception类可以自定义异常类,实现自定义异常,可以捕获不同类型的异常以实现不同的处理机制。

     1 <?php
     2 //通过这个程序可以实现捕捉不同的异常!
     3 class Exception1 extends Exception
     4 {
     5 
     6 }
     7 class Exception2 extends Exception 
     8 {
     9 
    10 }
    11 
    12 //$x=1;
    13 $x=2;
    14 try
    15 {
    16     if($x==1)
    17     {
    18         throw new Exception1("异常信息1");
    19     }
    20     else
    21     {
    22         throw new Exception2("异常信息2");
    23     }
    24 }
    25 catch(Exception1 $e1)
    26 {
    27     echo "捕捉到了".$e1->getMessage()."!";
    28 }
    29 catch(Exception2 $e2)
    30 {
    31     echo "捕捉到了".$e2->getMessage()."!";
    32 }
    33 ?>
    View Code

    通过set_exception_handler方法可以自定义系统默认的异常处理器,我们可以认为是顶级异常处理器,一旦出现异常,系统会自动调用

    1 <?php
    2 function myException($e)
    3 {
    4     echo "这里是顶级异常处理器!在没有进行捕捉的时候默认处理异常的异常处理器!<br/>异常信息是:".$e->getMessage();
    5 }
    6 set_exception_handler("myException");
    7 
    8 throw new Exception("出现了程序异常!");
    9 ?>
    View Code

    最后,PHP的异常处理机制还存在漏洞(PHP5.3.5):

    在下面的情况下PHP不会捕捉异常,而是直接报错。

     1 <?php
     2 //php的两个经典漏洞
     3 try
     4 {
     5     $a=8/0;
     6 }
     7 catch(Exception $e)
     8 {
     9     echo "异常信息捕捉成功!<br/>";
    10 }
    11 
    12 try
    13 {
    14     $file=fopen("xxx.txt","r+");
    15 }
    16 catch(Exception $e)
    17 {
    18     echo "异常信息捕捉成功!<br/>";
    19 }
    20 
    21 ?>
    View Code
  • 相关阅读:
    Hadoop命令手册
    编程算法
    综合8种子排序算法总结和比较
    android 创建一个新的每次project什么时候 请问自己主动 参加 V7依赖?
    【JDBC】java PreparedStatement操作oracle数据库
    【cocos2dx 加载资源目录】
    Project Euler:Problem 39 Integer right triangles
    矿Java开发学习之旅------&gt;Java排序算法经典的二分法插入排序
    [React Intl] Render Content with Placeholders using react-intl FormattedMessage
    [React Intl] Install and Configure the Entry Point of react-intl
  • 原文地址:https://www.cnblogs.com/kuangdaoyizhimei/p/3969607.html
Copyright © 2011-2022 走看看