6-3课 老师 为什么我抛出的异常不会通过方法来返回?不拦截

来源:6-3 接口请求全局异常处理-设计与验证

黃金葉

2020-05-27

老师,我哪里写漏了吗?,我正常的return可以返回,抛出异常就不行了,不拦截

http://img1.sycdn.imooc.com/szimg/5ecdd666098c8ca119201055.jpg

在spring-servlet.xml里我也注入了 头部引入也没问题 

http://img.mukewang.com/szimg/5ecdd71e09a4f96810310794.jpg

TestController.java
package com.mmall.controller;

import com.mmall.common.JsonData;
import com.mmall.exception.PermissionException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/test")
@Slf4j
public class TestController {

    @RequestMapping("/hello.json")
    @ResponseBody
    public JsonData hello(){
        log.info("Good!");
        throw new RuntimeException("test exception");
        //return JsonData.success("Good Morning!");
    }
}

如果我把抛出异常注释掉,正常return 

http://img1.sycdn.imooc.com/szimg/5ecdddaa09b3c4c006810118.jpg


写回答

2回答

Jimin

2020-05-28

你好,看一下那个exceptionReslover的实现

0
4
慕斯卡5022575
回复
黃金葉
请问少了什么引用?我的也是,抛出异常不通过方法返回,msg是null。
2020-08-11
共4条回复

黃金葉

提问者

2020-05-28

package com.mmall.common;

import com.mmall.exception.PermissionException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Slf4j
public class SpringExceptionResolver implements HandlerExceptionResolver {

    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        String url = request.getRequestURL().toString();
        ModelAndView mv;
        String defaultMsg = "System error";

        // 这里我们要求项目中所有请求json数据,都使用.json结尾
        if (url.endsWith(".json")) {
            if (ex instanceof PermissionException) {
                JsonData result = JsonData.fail(ex.getMessage());
                mv = new ModelAndView("jsonView", result.toMap());
            } else {
                log.error("unknown json exception, url:" + url, ex);
                JsonData result = JsonData.fail(defaultMsg);
                mv = new ModelAndView("jsonView", result.toMap());
            }
        } else if (url.endsWith(".page")){ // 这里我们要求项目中所有请求page页面,都使用.page结尾
            log.error("unknown page exception, url:" + url, ex);
            JsonData result = JsonData.fail(defaultMsg);
            mv = new ModelAndView("exception", result.toMap());
        } else {
            log.error("unknow exception, url:" + url, ex);
            JsonData result = JsonData.fail(defaultMsg);
            mv = new ModelAndView("jsonView", result.toMap());
        }

        return mv;
    }
}


0
0

Java开发企业级权限管理系统

源于企业真实Java项目,涉及大量高级技巧,覆盖权限管理开发技术

2261 学习 · 1347 问题

查看课程