zoukankan      html  css  js  c++  java
  • PHP中的错误处理机制

    常见的三种错误:

    1.Notice :通知性错误,最小的错误,当发生通知性错误时,会弹出一个提示信息。不会中断代码的执行。

    错误代码:

    #例如
    Notice: in I:wwwabcerror.php on line 2

    2.Warning:警告性错误,当发生警告性错误后,会弹出一个警告信息,他不会中断程序向下运行。

    #例如
    Warning: in I:wwwabcerror.php on line 2

    3.Error:致命性错误,当发生致命性错误后,会弹出一个致命错误信息,中断程序执行。

    #例如
    Fatal error: in I:wwwabcerror.php on line 2

    上面是常见的3中PHP中的错误,跟多详细错误看下面代码:

    #查看更多错误,可以调用系统函数get_defined_constants这个函数
    #简答的展示一些:
    
    echo "<pre>";
    var_dump(get_defined_constants());
    
    array(1326) {
      ["E_ERROR"]=>
      int(1)
      ["E_RECOVERABLE_ERROR"]=>
      int(4096)
      ["E_WARNING"]=>
      int(2)
      ["E_PARSE"]=>
      int(4)
      ["E_NOTICE"]=>
      int(8)
      ["E_STRICT"]=>
      int(2048)
      ["E_DEPRECATED"]=>
      int(8192)
      ["E_CORE_ERROR"]=>
      int(16)
      ["E_CORE_WARNING"]=>
      int(32)
      ["E_COMPILE_ERROR"]=>
      int(64)
      ["E_COMPILE_WARNING"]=>
      int(128)
      ["E_USER_ERROR"]=>
      int(256)
      ["E_USER_WARNING"]=>
      int(512)
      ["E_USER_NOTICE"]=>
      int(1024)
      ["E_USER_DEPRECATED"]=>
      int(16384)
      ["E_ALL"]=>
      int(32767)
      ["DEBUG_BACKTRACE_PROVIDE_OBJECT"]=>
      int(1)
      ["DEBUG_BACKTRACE_IGNORE_ARGS"]=>
      int(2)
      ["TRUE"]=>
      bool(true)
      ["FALSE"]=>
      bool(false)
      ["NULL"]=>];
    ~~~~还有更多。

    错误的触发:

    可以分为两种:

    1.系统自动触发

    系统自动检查程序的编译以及执行,在出错的时候,自动给出错误提示。

    2.手动触发:

    PHP中手动触发可以调用系统函数,一般用来调试相应的错误程序,一般是用户级别的错误。

    触发的函数:trigger_error

    第一个参数可以设置错误提示信息,第二个参数可以设置错误的级别

    E_USER_NOTICE:触发通知级别错误,最低级别的用户错误

    E_USER_WARNING:触发警告级别的错误,后续代码继续执行

    E_USER_ERROR:触发致命错误级别的错误,后续代码终止执行。

    错误显示开关:

    在php.ini中配置display_errors选项,默认为on,显示错误提示,在开发阶段建议设置on,便于项目的调试。产品上线设置为off,用户体验好,安全性高,该设置一直有效。

    也可以在脚本中执行ini_set函数,设置dispaly_errors的值,只能在脚本生命周期内,无法修改php.ini文件时,可以采用该方式,脚本周期结束,选项恢复。

    设置错误显示的级别:

    设置错误报告的级别后,可以决定来显示什么级别的错误信息。

    在php.ini中配置error_reporting选项,默认设置为显示所有的错误:

    设置错误报告的级别后,可以决定来显示什么级别的错误信息。

    E_ALL:显示所有的错误

    E_NOTICE:显示通知性的错误

    E_WARING:显示警告性的错误

    E_ERROR:显示致命性的错误

    同样也可以调用ini_set函数设置。

    错误日志:

    错误日志设置:
    一般项目上线需要记录错误日志,用于检查系统错误,默认日志开关开启。

    错误日志的默认路径 

    apache:

    apache/logs/error.log

    Nginx:

    /var/log/nginx/error.log

    自定义错误日志存储路径:
    ini_set('error_log','路径');

    只能设置一次有效,脚本生命周期结束,记录结束。

    自定义错误处理处理器:

    出现错误时,默认使用系统的错误处理机制来提示错误信息,可以提示什么级别的错误,错误提示字符串,发生错误的文件以及行号等。

    可以自定义设置错误提示:

    写一个自定义错误处理函数

    my_error

    有四个参数

    $errCode:错误代号

    $errStr:错误提示

    $errFile:错误文件

    $errLine:错误行号

    默认不会调用,必须调用set_error_handler函数设置为系统自动调用这个函数。

    先到这把,欢迎继续补充~~~,本人微信meng199898,转帖需备注 

  • 相关阅读:
    U3D shaderlab 相关指令开关
    CCF NOI1073
    CCF NOI1185
    CCF NOI1077(自然数的拆分问题 )
    CCF NOI1070(汉诺塔)
    CCF NOI1069
    2018年全国多校算法寒假训练营练习比赛(第一场)G.圆圈
    poj1941(递归)
    Codeforce914B (Conan and Agasa play a Card Game)
    Codeforce916B
  • 原文地址:https://www.cnblogs.com/bjphp/p/8455530.html
Copyright © 2011-2022 走看看