Spring的全局异常处理注意事项总结

一、异常捕获

(一)、手动抛出

普通代码块中抛出:

   if(id == 1){
        throw new BusinessException(Code.BUSINESS_ERR,"请不要使用你的技术挑战我的耐性!");
    }

try...catch中抛出:

注意抛出异常的地方要放在catch代码块中

  try{
        int i = 1/0;
    }catch (Exception e){
        throw new SystemException(Code.SYSTEM_TIMEOUT_ERR,"服务器访问超时,请重试!",e);
    }

(二)、向上抛出

mapper层:

@Mapper
public interface NiejianghaiMapper {

     public int add(Connection connection, Bill bill) throws BusinessException;

}

Service层:

接口:

public interface INiejianghaiService {

public int sum(Connection connection, Bill bill) throws BusinessException;

}

实现类:

@Service
public class NiejianghaiServiceImpl implements INiejianghaiService {

    @Autowired
    NiejianghaiMapper niejianghaiMapper;

    public int sum(Connection connection, Bill bill) throws BusinessException{

        return niejianghaiMapper.add(connection,bill);

     }

}

Controller层:

@CrossOrigin
@RestController
@RequestMapping("/firstPage")
public class FirstPageController {
   @Autowired
   INiejianghaiService niejianghaiService;
    
    @GetMapping("/hotDepart")
    public int findHotDepart() throws BusinessException {


        return niejianghaiService.sum(connection,bill);
    }


}

这样add这个方法的异常就会冲mapper层传递到controller层最终被全局异常处理捕获并进行处理。但是必须要上抛到controller层才能被捕获,如果只抛到了Service层异常是不会被捕获的。

向上抛出异常的终点必须是controller层。

参考文章:
SpringMVC之全局异常处理_周大福ye的博客-CSDN博客_springmvc全局异常处理器

为什么接口在设计时所有的方法一般都要抛异常?_wangqisen的博客-CSDN博客_接口的方法要抛出异常吗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小海海不怕困难

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值