PHP入门10 - PHP的错误与异常处理

1、PHP错误的等级php

 2、调整错误报告的级别函数

  一、经过脚本文件,查找 display_errors:是否开启,默认值为:ON(默认输出错误报告),调整则改为:E_ALL 或 E_ALL & ~E_NOTICE;工具

  二、能够在PHP脚本中修改 error_reporting(E_ALL)或 error_reporting(E_ALL & E_NOTICE);spa

3、自定错误报告方式调试

  一、自定义错误报告的处理方式,能够彻底绕过标准的PHP错误处理函数,这样就能够按本身定义的格式打印错误报告,或改变错误报告打印的位置,如下几种状况能够考虑自定义错误处理。日志

  二、能够记下错误的信息,及时发现一些生产环境出现的问题;code

  三、能够屏蔽错误。 能够控制错误的输出。 能够做为调试工具。对象

  四、使用set_error_handler()函数来设置用户自定义错误处理。blog

<?php
/**
 * @Author: Marte
 * @Date:   2018-04-30 15:38:08
 * @Last Modified by:   Marte
 * @Last Modified time: 2018-04-30 16:02:31
 */
    
    error_reporting(E_ALL & ~E_NOTICE);
    //在PHP中注册一个函数,来处理错误报告,而不按原来的方式处理了
    set_error_handler("errorfun");
    $mess = "";
    //自定义错误报告处理函数
    function errorfun($error_type, $error_message, $error_file, $error_line){
        global $mess;

        $mess .= "错误级别:{$error_type} <br>错误信息:{$error_message} <br>错误文件:{$error_file} <br>错误在第几行:{$error_line}";
    }

    gettype($a);
    echo "1111111111111111 <br>";
    echo "2222222222222222 <br>";
    echo $mess;
    /*
    输出信息:
        1111111111111111 
        2222222222222222 
        错误级别:8 
        错误信息:Undefined variable: a 
        错误文件:D:\WampServer\wamp64\www\php10.1.2_error_message.calss.php 
        错误在第几行:18
     */

4、记录错误日志get

  一、先配置php.ini 文件

    error_reporting = E_ALL // 将向PHP发送每一个错误

    display_errors = OFF //不显示错误报告

      设置:ini_set("display_errors", OFF);

      获取:ini_get();

    log_errors = On // 决定日志语句记录的位置

    log_errors_max_log = 1024 //每一个日志项的最大长度

    error_log = //制定错误写入的文件

    error_log = syslog  //系统日志

5、PHP异常处理:利用 try {}catch{},

  异常(Exception)处理用于在指定的错误发生时改变脚本的正常流程。是PHP5中的一个新的重要特性。异常处理是一种可扩展、易维护的错误处理统一机制,并提供了一种新的面向对象的错误处理方式。

  异常处理格式:

      try{  
             使用try去包含可能会发生异常的代码.
             一旦出现异常try进行捕获异常,交给catch处理。
             抛出异常语句:throw 异常对象。
          }catch(异常对象参数){
             在这里作异常处理。
          }[catch(。,,){
             .. .. ..
          }]

  一、try catch是一体的;

  二、try catch之间不能有任何代码

  三、工做原理:   

    1. 试着执行try中的代码, 若是没有问题, 继续执行catch以后的代码
    2. Exception 是系统的类
    3. 若是有异常对象抛出, 就将异常对象给 catch()中的类
    4. try中发生异常位置后的代码再也不执行, 而是直接到catch中, catch中执行完成之后, 再继续执行catch以后的代码

<?php
/*
 *  try {
 *
 *  }
 *    
 *
 *  catch(Exception $e) {
 *
 *  }
 *
 *  1. try catch是一体
 *  2. try catch之间不能有任何代码
 *
 *  工做原理
 *
 *      1. 试着执行try中的代码, 若是没有问题, 继续执行catch以后的代码
 *
 *      2. Exception 是系统的类 
 *
 *      3. 若是有异常对象抛出, 就将异常对象给 catch()中的类
 *
 *      4. try中发生异常位置后的代码再也不执行, 而是直接到catch中, catch中执行完成之后, 再继续执行catch以后的代码
 */
    echo "早上起床<br>";

try{
    echo "开车上班<br>";

    //抛出异常
    throw  new Exception("车子爆胎了");
    echo "路况很好<br>";

} catch(Exception $e) {    //  Exception $e = new Exception('');
    echo $e->getMessage()."<br>";//getMessage() 获取异常信息
echo "换上备胎,继续开车上班<br>"; } echo "到公司开始工做<br>";
相关文章
相关标签/搜索