1、页面跳转形式
首先我们在Controller层定义一个error的类,并写一个普通的抛出异常方法
正常来说页面会显示报错
这时我们需要定义一个异常的全局捕获类MyselfExceptionHandler
我们直接以ModelAndView的形式返回即可。设置跳转页面error
这样,在发生异常的时候,用户就不会看到奇怪的页面
而是由我们自己定义的错误页面(项目团队可以自定义一些好看的内容及客服联系方式等)
2、ajax形式
当然除了web形式的错误,还有ajax请求报错,我们也需要做全局异常的捕获。
我定义了一个页面,引入了一个ajax请求的自定义js
方法会向后台接口做请求
而请求的这个方法正好有一个自定义的常规异常。这时我们的全局异常捕获类就会进行捕获,并返回相关的信息
页面的js就会根据返回的状态码进行判断,不会导致请求方法一直loading。
3、统一返回异常的形式
当然上面两种是针对性的解决单一问题,我们还需要综合性的解决以上的异常问题,同时兼容ajax与web异常。
那么其实和很多实现方式一样就是做判断,在捕获异常后 ,判断是什么类型的针对性处理
这里判断是哪种形式的异常分别处理
ajax的请求有固定的写法,就是判断请求头的内容
之后就可以愉快的处理web或ajax的异常啦。