oblind

php 错误和异常处理

PHP错误和异常是两个系统,内核使用的是错误系统,用户请使用后加入的异常系统。

致命错误:会导致脚本退出的错误:E_ERROR, E_USER_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_RECOVERABLE_ERROR, E_PARSE

非致命错误:E_NOTICE, E_WARNING

使用 set_error_handler() 捕获错误,然后throw,可以将错误变成异常,然后在try - catch 结构中捕获

使用 set_exception_handler() 可以捕获未catch的异常,可以用作框架中的错误处理机制

使用 register_shutdown_function() 和 error_get_last() 可以记录导致退出的错误信息

register_shutdown_function(function() {

  if($e = error_get_last()) {

    error_log(print_r($e, true));

  }

})

评论