欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP的错误处理和异常处理

程序员文章站 2022-04-09 21:01:22
由于教程是围绕着文件打开做的错误处理,所以先记录几个用于文件处理的一些函数,fopen 用于打开一个文件;file_exists 用于检查目录是否存在;fclose( $变量 )用于指定关闭打开的文件; PHP处理错误的几种方式:die()语句;自定义错误和错误触发器;错误日志; die()语句: ......

  由于教程是围绕着文件打开做的错误处理,所以先记录几个用于文件处理的一些函数,fopen 用于打开一个文件;file_exists 用于检查目录是否存在;fclose( $变量 )用于指定关闭打开的文件;

  PHP处理错误的几种方式:die()语句;自定义错误和错误触发器;错误日志;

  die()语句:

    eg :file_exists ( “文件路径/文件名” ) or die( "文件不存在" );  

  自定义错误处理器(函数)

    基本语法:首先定义一个错误函数,然后改写set_error_handler处理器;

    error_function( error_level , error_massage, error_file , error_line , error_context);

    //这里的error_level , error_massage 是必要的,后面的三个参数是可选的;

    set_error_handler( “ 错误函数名 ” , 错误等级);

    PHP的错误处理和异常处理

     //  eg:fuction  my_error( $errno , $errmes ){         //定义错误函数

          echo   $errno . “错误信息是:” . $errmes ; 

        }

        set_error_handler( "my_error" , E_USER_WARNING );           

        //这里改写了user_warning的错误处理器,如需要定义其他级别错误需要分别定义错误等级;一般自定义错误处理器都是定义user级别的错误;

        $age=200;

        if( $age > 120 ){

          //调用错误处理器;

          trigger_error( " 输入年龄过大 " , E_USER_WARNING);   //trigger_error函数默认是NOTICE级别,如有需要必须自定义错误级别;  

        }

  PHP错误日志保存

    基本语法:error_log( 错误信息  ,destination_type , " 错误日志保存位置及文件名 " );

        date_default_timezone_set( “ Asia/ChongQing ” );    //这里定义一个时区,后面的错误信息插入时间方便日后阅读错误日志;也可在php.ini中更改默认设置date.timezone选项;

      //  eg:fuction  my_error( $errno , $errmes ){         //定义错误函数

           $error_info = $errno . “错误信息是:” . $errmes ; 

           error_log( " 时间是 " . date( " Y - m - d G - i - s " ) $error_info ." \r\n " , 3 , "XXX.txt" );             //  \r\n是txt文件里的换行符,destination_type 这里大多数情况下使用3追加记录日志模式;

        }

  PHP中的异常处理

    基本语法:

    try{

      可能出现的错误的代码;

    }catch( Excepion $e ){

      1.自己处理;2.自己不处理,抛出;

    }

    throw new Excepion( “异常信息提示” );         //  throw用于抛出异常;

    当捕获到一个异常以后,try()块里的代码将不再继续执行;

    catch( Excepion $e ){

      //这里可以使用函数调用错误信息,行号,异常代码等等,详细参数如下图所示;

      echo  $e ->  getMessage() ;

    }

    PHP的错误处理和异常处理

    当异常继续被抛出,而又没有catch接受异常,PHP会调用默认的*异常处理器,*异常处理器也可以自定义;

    function my_exception( $e ){      //自定义*异常处理器函数

      echo  错误信息  . $e -> getMessage();    //也可以使用上图其他函数;

    }

    set_exception_handler( " *异常处理器函数名 " ) ;  //修改默认*处理器(函数)

    PHP的错误处理和异常处理