php的错误级别

deprecated   不赞成使用,可能有漏洞可能效率低,以后的版本不支持等

notice  通知级别的错误

warning    警告 这个需要看代码是不是哪里出了问题     以上三个程序仍然继续向下执行

fatal error  致命错误  程序停止执行

parse error 解析错误了  直接挂了  程序停止执行

=================================

E_USER 级别错误,用户自定义错误;好比,我触发trigger_error()一个E_USER_ERROR级别错误,它就相当于php本身的error错误

顺便这里说下,找到php.ini的一个方法,打印出phpinfo();

如图:

程序里写  非php.ini

php5默认级别是E_ALL & ~E_NOTICE 意思是,除了notice级别的错误,都显示。这在开发模式时是有必要的。

error_reporting(0);  //不显示错误

error_reporting(-1); // 显示所有错误

显示出来:ini_set('display_errors','On');

<?php

  function myhandler($errorno, $errorstr){
      switch ($errorno) {
          case E_USER_ERROR:
              echo $errorno, ':  ',$errorstr, '<br/>';
             die;// 如果是这个级别则结束掉
              break;
          case E_USER_WARNING:
              echo $errorno, ': ',$errorstr, '<br/>';
              break;
          default:
              # code...
              break;
      }

    return true;

  }

  set_error_handler('myhandler');

 
  $a = '0';
  if (intval($a)<=0){
      trigger_error('warning level', E_USER_WARNING);
  }
  echo 'go on_1';   echo '<br/>';

  $b = 'hi';
  if(!is_numeric($b)){
     trigger_error('not a number', E_USER_ERROR);
  }
  echo 'go on_2';  echo '<br/>';

这里可以看下手册中trigger_error()和set_error_handler()的用法。

trigger_error()触发E_USER系列的错误。

set_error_handler(),可以定义自己的错误。

mixed  set_error_handler  ( callable  $error_handler  [, int $error_types  = E_ALL | E_STRICT  ] )

$error_handler的参数   handler  ( int $errno  , string $errstr  [, string $errfile  [, int $errline  [, array $errcontext  ]]] )

$errorno是错误级别,比如E_USER系列的...

原文地址:https://www.cnblogs.com/firstForEver/p/4940225.html