php优秀框架codeigniter学习系列——异常和错误处理机制

  这篇介绍下CI框架的异常和错误处理机制。php

  在入口文件index.php中,根据设置的环境参数设置error_reporting的范围,和是否显示错误。框架

 

  在CI初始化程序CodeIgniter.php中,设置自定义的错误处理方法,自定义的异常处理方法,自定义的php停止处理方法。函数

1     set_error_handler('_error_handler');
2     set_exception_handler('_exception_handler');
3     register_shutdown_function('_shutdown_handler');

  _error_handler,_exception_handler,_shutdown_handler均在system/core/Common.php中定义。spa

  _error_handler

  当php程序出错时,_error_handler会捕获这个错误。获得的错误信息包括错误级别,错误信息,出错文件地址,出错行数。对于E_ERROR | E_PARSE | E_COMPILE_ERROR | E_CORE_ERROR | E_USER_ERROR级别的错误,会设置http请求返回code为500。对于error_reporting()为0(多是生产环境也多是函数前加有忽略错误标志@)的或者错误级别没有在index.php中设置的,直接返回。不然会记录错误日志。若是设置了display_errors能够展现错误,则显示错误信息给用户看到。日志

  值得一提的是,官方文档有说明。如下级别的错误不能由用户定义的函数来处理: E_ERROR、 E_PARSE、 E_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR、 E_COMPILE_WARNING。程序一般会直接抛出一个错误信息。不管是否开启error_reporting,都不能记录到日志中。code

  _exception_handler

  用于捕获异常。经常由throw new exception("string...")触发。它也会调用日志处理类来记录日志。它和_error_handler传递给日志处理类的日志类别参数都是error。若是设置了display_errors能够展现错误,则显示相关异常信息给用户看到。blog

  _shutdown_handler

  程序执行停止时候(无论有没有错误),会调用这个方法。该方法会去程序运行中出现的错误,若是有,传递给_error_handler函数处理。文档

  

  除了这三个异常捕获的函数。CI框架还提供了主动抛出错误页面的函数。在system/core/Common.php中定义了show_error,show_404。string

  show_error能够设置错误信息,设置Http状态码,出错显示模版等。it

  show_404能够设置404错误显示模板,是否记录日志等。

相关文章
相关标签/搜索