异常处理&规范化返回值

本文探讨了在程序中如何进行异常处理,包括主动抛出异常的两种方式——`RuntimeException`和特定异常,并强调了异常捕获的重要性。同时,文章介绍了如何通过自定义`ResponseEntity`工具类和`WebResult`bean实现HTTP响应的规范化,确保向客户端提供明确的错误信息和状态码。
摘要由CSDN通过智能技术生成

异常抛出&捕获

在程序中遇到异常信息时 , 一般都应该抛到最上层进行处理.怎样抛出需要注意 , 在特殊情况(比如入参丢失) 最好抛出指定异常.

 

一 主动抛出异常

第一步 抛出异常

1. throw new  RuntimeException

if (url == null) {
    throw new RuntimeException("url is null");
}

直接返回自定义异常

优点:方便,在不返回给前台时适合使用

缺点:如果不在之后抓取 前台的Http status 会为500 服务器错误,如果没看过文档可能会有歧义.

wiki 

将所有“CheckedException”转换为“RuntimeException”或其子类(如IllegalArgumentException),抛出,在“顶层”统一处理。

但是必须在最上层进行捕获 , 并处理(返回给调用者)

2. 特殊情况处理

抛出指定异常

 @GetMapping("url/...")
    public List<Customer> getCustomerSwarm(@PathVariable("app_id") String appId ) 
    throws MissingServletRequestParameterException {
        if (StringUtils.isBlank(appId)) {
            throw new MissingServletRequestParameterException("app_id","String");
        }
    }

new MissingServletRequestParameterException 返回报错信息 可以在入参校验时更规范化

Preconditions

Preconditions.checkNotNull(input,"input不能为空!");

guava的参数校验方法 校验失败返回 NullPointerExc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值