首页 > IT职业 > IT职场 > mvc自定义全局异常处理
好的异常信息处理应该具有以下几个优点
显示效果佳,而不是原生黄页
能够从异常中直接分析出异常源
能够记录传递异常信息给开发人员
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/ ,如需转载,请注明出处,否则将追究法律责任。