温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java健壮性的方法有哪些

发布时间:2021-12-27 17:46:42 来源:亿速云 阅读:134 作者:iii 栏目:大数据

本篇内容主要讲解“Java健壮性的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java健壮性的方法有哪些”吧!

一、进行统一的业务处理响应

根据蚂蚁金服开放平台的标准返回,一个 response 至少应当有4个返回值。

1、isSuccess  调用是否成功

2、data           返回的响应数据

3、errorCode  错误码

4、errorMsg    错误信息

这就要求我们的接口要有标准的统一的 response ,那怎么实现呢?

1、Spring 切面, JDK 动态代理,Cglib 动态代理等用代理类实现

2、匿名子类,使用一个公共的 Executor 来负责处理所有的请求。

上面两种模式都可以实现标准的 response 的封装,那么具体要封装哪些东西呢?其实最主要的就是统一的 try catch,防止出现任何的 500 错误给到调用方。

------ 为什么要在最外层去完成呢?------

因为 500 错误对于调用方来说是致命而且是毫无价值的,无论调用方是前端还是其他的业务系统

------ 设定统一的错误码 ------

参数错误           PARAMETER_ERROR

数据库错误       DATABASE_ERROR

外部系统错误   OUTER_SYSTEM_ERROR

如果有了上面的这些错误码以及错误信息,业务方至少可以告知用户究竟发生了什么事,也可以设定一些列的告警以及自动化运维的方式来处理这些错误。

二、参数检查

在进行真正的逻辑处理前,应当对入参进行一系列的校验,以保持后续业务处理逻辑的轻量,这也是 fast fail 思想的指导,有错误尽早结束处理。

具体是怎样的呢?我们假设参数为 m.

if( null == m ){return ;}

进行空判断,防止后续滴啊用m发生 NullPointerException,但这里也不建议抛出NPE,因为看到日志也会很迷惑。

if( StringUtils.isEmpty( m ) ){return ;}

字符串是否为空串

if( CollectionUtils.isEmpty.isEmpty( m ) ){return ;}

集合是否为空或者null

try{

    JSON.parseObject( m );

    return true;

}

catch(JSONExceptin e){

    return false;

}

判断字符串是否为 JSON 格式

三、重试机制

对于特定的外部系统错误,可以尝试多次重试这种策略,当然这也是简历在对方的服务是幂等的前提下。这样做在某些网络不稳定的情况下可以提高响应成功率。

四、幂等机制

什么叫幂等?意思就是  无论何时何处何人,只要是先攻的请求,就应当有相同的响应,直到到达终态。

这个原则并不关注上一次的执行结果,企鹅本次结果不应当因为上一次请求的部分成功或者失败而导致某些中间状态不一致导致请求失败。

五、Lambda

Optionl.of( target )

            .getOrElse( new ArrayList() )

            .filter( Object::NotNull)

            .forEach( () -> {} )

这种写法可以确保绝大部分的异常不出现,特别是在对于集合进行处理的时候,因为集合中只要有其中一个值是会导致程序失败的,整个程序都会报错。这样写因为对数据做了比较多的检查和兼容,所以出现错误的概率会比较低,但也会有一个弊端,就是当这样的程序都出现异常的时候,开发者一般不知从何查起,要定位出是哪行数据就已经很费劲了。

到此,相信大家对“Java健壮性的方法有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI