关于全局错误,异常捕获

class Capture
{
    private static $callback;

    public static function register($callback)
    {
        self::$callback = $callback;
        set_error_handler([__CLASS__, ‘errorHandle‘], E_ALL ^ E_DEPRECATED ^ E_STRICT ^ E_NOTICE ^ E_WARNING);
        set_exception_handler([__CLASS__, ‘exceptionHandle‘]);
        register_shutdown_function([__CLASS__, ‘fatalHandle‘]);
    }

    public static function errorHandle($errno, $errstr, $errfile, $errline)
    {
        call_user_func_array(self::$callback, [‘file‘=>$errfile , ‘line‘ => $errline , ‘message‘ => $errstr, ‘type‘ => ‘user_error‘, ‘level‘ => $errno]);
    }

    public static function exceptionHandle($exception)
    {
        call_user_func_array(self::$callback, [‘file‘=>$exception->getFile(), ‘line‘ => $exception->getLine(), ‘message‘ => $exception->getMessage(), ‘type‘ => ‘exception‘, ‘level‘ => ‘‘]);
    }

    public static function fatalHandle()
    {
        $error = error_get_last ();
        // 捕捉对进程影响的错误信息,并给用户返回正确的页面
        if (in_array ( $error[‘type‘], array (
            E_ERROR,
            E_CORE_ERROR,
            E_PARSE,
            E_USER_ERROR,
            E_COMPILE_ERROR,
            E_RECOVERABLE_ERROR,
        ) )) {
            call_user_func_array(self::$callback, [‘file‘ => $error[‘file‘], ‘line‘ => $error[‘line‘], ‘message‘ => $error[‘message‘], ‘type‘ => ‘error‘, ‘level‘ => $error[‘type‘]]);
        }
    }
}
时间: 2024-10-01 06:52:04

关于全局错误,异常捕获的相关文章

全局的异常捕获Struts2

自定义一个拦截器实现全局异常捕获~ struts配置文件. <interceptors> <interceptor name="myException"  class="org.sixtb.portal.base.interceptor.InterceptorHandler"/> <!-- 定义一个拦截器栈 --> <interceptor-stack name="myExceptionInterceptor&qu

全局的异常捕获过滤器 区分ajax请求 与浏览器导航请求

建一个类ExceptionAttribute 继承 HandleErrorAttribute 重写OnException 方法 里面代码: //1.0日志记录(文本日志和数据库日志) //拿到日志 Exception exe= filterContext.Exception; //获取当前exe的最详细信息 Exception inexe = exe.InnerException==null ? exe:exe.InnerException; while (inexe.InnerExceptio

SpringBoot配置全局异常捕获

1 SpringBoot配置全局的异常捕获 项目的说明 配置thymeleaf作为视图模板 ExceptionController.java模拟测试用 MyAjaxExceptionHandler.java捕获到异常以ajax形式返回 MyExceptionHandler.java捕获到异常以页面形式返回 ajaxerror.html这个是测试返回ajax异常的页面 error.html以页面形式返回的异常到这个页面 1.1 页面跳转形式 1.1.1 配置 MyExceptionHandler.

Spring-MVC开发之全局异常捕获全面解读(转)

异常,异常.我们一定要捕获一切该死的异常,宁可错杀一千也不能放过一个!产品上线后的异常更要命,一定要屏蔽错误内容,以免暴露敏感信息!在用Spring MVC开发WEB应用时捕获全局异常的方法基本有两种: WEB.XML,就是指定error-code和page到指定地址,这也是最传统和常见的做法 用Spring的全局异常捕获功能,这种相对可操作性更强一些,可根据自己的需要做一后善后处理,比如日志记录等. SO,本文列出Spring-MVC做WEB开发时常用全局异常捕获的几种解决方案抛砖引玉,互相没

自定义全局异常捕获

原文:http://blog.csdn.net/jinzhencs/article/details/51700009 第一种:实现HandlerExceptionResolver 注意: 把错误码 重设成200,不然还是返回的异常信息. 注解@Compoment交由spring创建bean 之后就能愉快的返回自己的错误码了. 或者记录错误日志. /** * 全局异常捕获 * @author Mingchenchen * */ @Component public class GlobleExcep

Spring-MVC开发之全局异常捕获全面解读

在用Spring MVC开发WEB应用时捕获全局异常的方法基本有两种, WEB.XML,就是指定error-code和page到指定地址,这也是最传统和常见的做法 用Spring的全局异常捕获功能,这种相对可操作性更强一些,可根据自己的需要做一后善后处理,比如日志记录等. SO,本文列出Spring-MVC做WEB开发时常用全局异常捕获的几种解决方案抛砖引玉 互相没有依赖,每个都可单独使用! 定义服务器错误WEB.XML整合Spring MVC web.xml <error-page> <

C#中的那些全局异常捕获

1.WPF全局捕获异常 public partial class App : Application { public App() { // 在异常由应用程序引发但未进行处理时发生.主要指的是UI线程. this.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException); //  当某

Configure、中间件与ErrorHandlingMiddleware全局异常捕获

一.Configure Startup.cs中的Configure方法主要是http处理管道配置.中间件和一些系统配置,其中 IApplicationBuilder: 定义一个类,该类提供配置应用程序请求的机制管道.通过IApplicationBuilder下的run.use方法传入管道处理方法.这是最常用方法,对于一个真实环境的应用基本上都需要比如权限验证.跨域.异常处理等. IHostingEnvironment:提供有关正在运行的应用程序的web托管环境的信息 简单来说Configure方

MVC 好记星不如烂笔头之 ---&gt; 全局异常捕获以及ACTION捕获

public class BaseController : Controller { /// <summary> /// Called after the action method is invoked. /// </summary> /// <param name="filterContext">Information about the current request and action.</param> protected ov