当我使用下面的(简化的)错误处理时,$notice它确实会捕获E_DEPRECATED(8192)错误。
使用$notice时,值为 6143,其位掩码为:
0001011111111111
这不包括E_DEPRECATED下面的位。
0010000000000000
我不明白为什么这个错误处理也会捕获E_DEPRECATED(8192)错误。
$error   = (int)            E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_RECOVERABLE_ERROR | E_PARSE | E_USER_ERROR;
$warning = (int) $error   | E_WARNING | E_CORE_WARNING | E_COMPILE_WARNING | E_USER_WARNING;
$notice  = (int) $warning | E_NOTICE | E_USER_NOTICE;
$all     = (int) $notice  | E_STRICT | E_DEPRECATED | E_USER_DEPRECATED;
function error_handler($errno, $errstr, $errfile, $errline ) {
    echo "$errno - $errfile:$errline $errstr") ;
}
error_reporting($notice);
set_error_handler("error_handler");