ITPub博客

首页 > IT职业 > IT职场 > mvc自定义全局异常处理

mvc自定义全局异常处理

IT职场 作者:yaweche 时间:2021-09-09 09:11:00 0 删除 编辑

 好的异常信息处理应该具有以下几个优点

  • 显示效果佳,而不是原生黄页

  • 能够从异常中直接分析出异常源

  • 能够记录传递异常信息给开发人员

     1.第一点显示效果方面可以自定义页面,常见的包括404和500状态码页面。在mvc中404页面可以通过以下两种方式进行自定义

回到顶部回到顶部

问题拓展

  后台异常处理代码完成以后,前台还需进行相应的处理。这里主要针对api接口,因为请求页面后台可以直接转向500错误页面,而api接口一般是通过ajax或者客户端httpclient请求的,如果错误了跳转到500页面,这样对客户端来说就不友好了。基于这点所以api请求异常返回了异常的详细json对象,让客户端自己进行异常处理。我这里给出ajax处理异常的方式。

     在jquery中全局ajax请求可以设置相应默认参数,比如下面代码设置了全局ajax请求为异步请求,不缓存

图片描述

//ajax请求全局设置$.ajaxSetup({    //异步请求
    async: true,    //缓存设置
    cache: false});

图片描述

    ajax请求完成会触发Complete事件,在jquery中全局Complete事件可以通过下面代码监听

图片描述

$(document).ajaxComplete(function (evt, request, settings) {    var text = request.responseText;    if (text) {        try {            //Unauthorized  登录超时或者无权限
            if (request.status == "401") {                var json = $.parseJSON(text);                if (json.Message == "logout") {                    //登录超时,弹出系统登录框
                } else {
                    layer.alert(json.ExceptionMessage ? json.ExceptionMessage : "系统异常,请联系系统管理员", {
                        title: "错误提醒",
                        icon: 2
                    });
                }
            } else if (request.status == "500") {
                var json = $.parseJSON(text);
                $.ajax({
                    type: "post",
                    url: "/Error/Path500",
                    data: { "": json },
                    data: json,
                    dataType: "html",
                    success: function (data) {
                        //页面层
                        layer.open({
                            title: '异常信息',
                            type: 1,
                            shade: 0.8,
                            shift: -1,
                            area: ['100%', '100%'],
                            content: data,
                        });
                    }
                });

            }
        } catch (e) {
            console.log(e);
        }
    }
});

图片描述

红色部分代码就是我用来处理500错误的代码,重新发请求到异常显示界面渲染成html后显示。其实这么做无疑增加了一次请求,最好的实现方式,直接通过异常信息json,通过js绘制出html。至此完成了mvc全局的页面,接口异常信息处理。通过结合上面的前端截图插件,快速截图留证,方便后续程序员分析异常信息。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4257/viewspace-2800077/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-12

  • 博文量
    0
  • 访问量
    970