zoukankan      html  css  js  c++  java
  • springmvc之异常处理ResponseStatusExceptionResolver

    直接看例子:

    在java中:

        @RequestMapping("/testResponseStatusExceptionResolver")
        public String testResponseStatusExceptionResolver(@RequestParam("i") Integer i) {
            if(i == 13) {
                throw new UserNameNoMatchPassword();
            }
            System.out.println("ResponseStatusExceptionResolver执行...");
            return "success";
        }

    定义自己的异常类:UserNameNoMatchPassword.java

    package com.gong.springmvc.test;
    
    import org.springframework.http.HttpStatus;
    import org.springframework.web.bind.annotation.ResponseStatus;
    
    @ResponseStatus(value=HttpStatus.FORBIDDEN,reason="用户名和密码不匹配")
    public class UserNameNoMatchPassword extends RuntimeException {
    
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
    
    }

    使用ResponseStatus注解标注,value表示状态码,reason表示抛出异常的原因。

    index.jsp

    <a href="testResponseStatusExceptionResolver?i=10">testResponseStatusExceptionResolver</a>

    启动服务器之后:

    点击:

    将i=10改为i=13并刷新:

    显示自己定义的异常状态码和相关信息。

    当然, ResponseStatus不仅可以对类进行注解,也可以对方法进行注解。比如我们这样做:

        @ResponseStatus(reason="测试",value=HttpStatus.NOT_FOUND)
        @RequestMapping("/testResponseStatusExceptionResolver")
        public String testResponseStatusExceptionResolver(@RequestParam("i") Integer i) {
            if(i == 13) {
                throw new UserNameNoMatchPassword();
            }
            System.out.println("ResponseStatusExceptionResolver执行...");
            return "success";
        }

    运行服务器之后并点击:

    在控制台可以看到:

     

    目标方法的确是执行了,但是我们在方法上定义了ResponseStatus注解,因此会抛出异常并显示相关信息。

    这就是ResponseStatus注解修饰方法和修饰类的作用以及他们之间的不同。

  • 相关阅读:
    Codeforces Round #614 (Div. 2) D. Aroma's Search
    Codeforces Round #614 (Div. 2) C. NEKO's Maze Game
    Kruskal最小生成树及应用
    Codeforces Round #608 (Div. 2) E. Common Number
    Codeforces Round #607 (Div. 2) D Beingawesomeism
    codeforce Hello 2020 A~E
    Codeforces Round #609 (Div. 2)
    Codeforces Round #607 (Div. 2) C. Cut and Paste
    Codeforces Round #605 (Div. 3) F. Two Bracket Sequences 三维dp
    2019-2020Nowcoder Girl初赛题解
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12196806.html
Copyright © 2011-2022 走看看