• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP异常类及异常处理操作实例详解

    本文实例讲述了PHP异常类及异常处理操作。分享给大家供大家参考,具体如下:

    异常处理归类于错误处理,PHP从5.1.0开始增加了Exception异常处理类。

    一、异常处理

    PHP 异常处理与Java相似,都使用try、throw、catch语句,发生异常时代码。如果异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么将发生一个严重的错误(致命错误),并且输出 "Uncaught Exception" (未捕获异常)的错误消息。

    1、try:

    用于可能发生异常的代码块。

    2、throw:

    规定如何触发(trigger)异常,用于抛出异常。每一个throw必须对应至少一个catch。

    3、catch:

    捕获异常,并创建包含异常信息的对象。

    说明:姑且认为php的异常必须throw才能捕获到。

    基本结构:

    try{
    #some codes
    throw new Exception("message"[,code[,...]]);
    }
    catch(Exception $ex){
    #some codes
    }
    
    

    二、PHP 异常基类Exception

    类摘要:

    Exception {
    /* 属性 */
    protected string $message ;
    protected int $code ;
    protected string $file ;
    protected int $line ;
    /* 方法 */
    public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
    final public string getMessage ( void )
    final public Exception getPrevious ( void )  //获取异常链中前一个异常
    final public int getCode ( void )
    final public string getFile ( void )
    final public int getLine ( void )
    final public array getTrace ( void )   //获取异常追踪信息
    final public string getTraceAsString ( void )  //字符串方式返回异常追踪信息
    public string __toString ( void )
    final private void __clone ( void )
    }
    
    

    说明:

    由该基类可看出,php异常对象主要包含异常的文本信息(message)、异常代码/代号(code,应该是用于开发人员标识)、异常发生的文件(file,即发生异常的php文件)、异常发生的具体位置(line,抛出异常的行号)。

    示例:

    ?php
    try {
     throw new Exception("Some error message", 30);//抛出异常,设置异常代号为30
    } catch(Exception $e) {
     echo "Exception:file:".$e->getFile().",message:" . $e->getMessage().",code:".$e->getCode()."line:".$e->getLine();
    }
    ?>
    
    

    浏览器打印结果:

    Exception:file:D:\studyFolder\wamp\workspace\basicphp\testException.php,message:Some error message,code:30line:3

    关于php中类与对象的基础(如方法调用),具体看类与对象小节。

    三、自定义异常类

    示例:

    class customException extends Exception
     {
     public function errorMessage()
     {
     //error message
     $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
     .': b>'.$this->getMessage().'/b> is not a valid E-Mail address';
     return $errorMsg;
     }
     }
    
    

    抛出与捕获该异常:

    try{
    throw new customException("这是自定义异常。");
    }
    catch(customException $ex){
    #some codes
    }
    
    

    四、多catch捕获异常

    当一个try语句中可能抛出不同的异常时,对应的可有多个catch块捕获不同类型异常。同java中的一些注意点:

    1、大异常catch放后面。因为抛出异常时按顺序判断先满足哪个catch,一次仅执行一个catch。

    2、执行一次try,最多执行一个catch(发生异常时),即若前面某个catch满足执行,则后面的catch不再考虑。(常见考题)

    五、嵌套抛出异常

    结构示例:

    try{
     try{
      throw new Exception("第一个异常");
     }
     catch(Exception $e1){
      #相关处理
      throw new Exception("处理后抛出异常");//再次抛出异常
     }
    }
    catch(Exception $e2){
     #相关处理
    }
    
    

    六、设置顶层异常处理器

    set_exception_handler('myException'):函数设置所有未捕获的异常的处理函数句柄(函数名,此处即myException)。

    示例:

    ?php
    function myException($exception)
    {
    echo "b>Exception:/b> " , $exception->getMessage();
    }
    set_exception_handler('myException');
    throw new Exception('Uncaught Exception occurred');
    ?>
    
    

    结果:

    Exception:Uncaught Exception occurred

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP错误与异常处理方法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP如何抛出异常处理错误
    • php中异常处理方法小结
    • PHP中的错误处理、异常处理机制分析
    • PHP中异常处理的一些方法整理
    • PHP异常处理Exception类
    • PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
    • PHP中常见的错误与异常处理总结大全
    • 一个显示效果非常不错的PHP错误、异常处理类
    • php 异常处理实现代码
    • PHP中的异常处理机制深入讲解
    上一篇:PHP单例模式应用示例【多次连接数据库只实例化一次】
    下一篇:PHP自定义错误处理的方法分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP异常类及异常处理操作实例详解 PHP,异常,类,及,处理,操作,