SpringMVC处理自定义的异常(应用自定义的Exception)

本文介绍了如何在SpringMVC中处理自定义异常。通过创建自定义异常类,如SpittleIsNullException,并继承自RuntimeException,可以设置HTTP状态码和提示信息。异常发生时,可以选择直接显示HTTP状态码页面,或者通过@ExceptionHandler注解在Controller中指定跳转到特定错误页面,避免显示HTTP代码页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,这里指的异常是程序员自定义的异常,比如StudentIsNullException,而不是自带的异常,比如ClassNotFoundException等;

2,自定义一个异常:比如下图,这样若firstname没有初始化,则执行sayHello()方法则会报异常:SpittleIsNullException

@Component  //添加为Spring Bean
public class Spittle {
      public String firstname;
      public String lastname;
      public String username;
      public String password;
    public void sayHello(){
        if(this.firstname == null){
            throw new SpittleIsNullException();
        }
        else System.out.println("你好,我的名字是"+this.firstname);
    }}

3,实现一个继承自RunTimeException的SpittleIsNullException类,且加上注解:

@Component  //添加为Spring bean
/*将异常映射为415(UNSUPPORTED_MEDIA_TYPE对应的码值就是415)*/
@ResponseStatus(value = HttpStatus.UNSUPPORTED_MEDIA_TYPE,
                        reason = "参数是空")
public class SpittleIsNullException extends RuntimeException {
}

解释:HttpStatus的属性由对应的HTTP状态码,reason的值提示在页面上

4,如果想在异常出现时,只显示HTTP状态码的页面,那么完成2,3后就不用管了,如下图:

 5,如果想在异常出现时,不显示HTTP状态代码页面,而是想跳转到应用指定的页面,那么则在2,3的基础上,在调用可能发生异常的方法的Controller类中,添加异常处理的方法(跳转到指定页面而不是HTTP代码页面),重点是注解:@ExceptionHandler(SpittleIsNullException.class):

public class SpittleController {
    Spittle spittle;
    @Autowired
    public SpittleController(Spittle spittle){
        this.spittle=spittle;
    }
    @RequestMapping(value = "/{name}",method= RequestMethod.GET)
    public String spittles(
            @PathVariable("name") String name, Model model){
            System.out.println("还没到错误点");
            System.out.println(name);
            this.spittle.sayHello();
            return "view/a";
    }
    @ExceptionHandler(SpittleIsNullException.class)
    public String handleDup(){
        return "e";
    }

这样,不出现异常,就跳转到view包下的a.jsp页面;否则出现异常之后,就会跳转到e.jsp,不会显示HTTP代码页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值