ror cep ring false stat bst mex log
之前,调用第3方服务,每个方法都差不多“长”这样, 写起来啰嗦, 改起来麻烦, 还容易改漏。
- public void authorizeRoleToUser(Long userId, List<Long> roleIds) {
- try {
- power.authorizeRoleToUser(userId, roleIds);
- } catch (MotanCustomException ex) {
- if (ex.getCode().equals(MSUserException.notLogin().getCode()))
- throw UserException.notLogin();
- if (ex.getCode().equals(MSPowerException.haveNoPower().getCode()))
- throw PowerException.haveNoPower();
- throw ex;
- } catch (MotanServiceException ex) {
- CatHelper.logEventService("Power-authorizeRoleToUser", "authorizeRoleToUser", ex.getStatus(),
- ex.getErrorCode(), ex.getMessage());
- throw ex;
- } catch (MotanAbstractException ex) {
- CatHelper.logEventService("Power-authorizeRoleToUser", "authorizeRoleToUser", ex.getStatus(),
- ex.getErrorCode(), ex.getMessage());
- throw ex;
- } catch (Exception ex) {
- CatHelper.logError(ex);
- throw ex;
- }
- }
我经过学习和提取封装, 将try ... catch ... catch .. 提取为公用, 得到这2个方法:
- import java.util.
- function.Supplier;
- public static < T > T tryCatch(Supplier < T > supplier, String serviceName, String methodName) {
- try {
- return supplier.get();
- } catch(MotanCustomException ex) {
- if (ex.getCode().equals(MSUserException.notLogin().getCode())) throw UserException.notLogin();
- if (ex.getCode().equals(MSPowerException.haveNoPower().getCode())) throw PowerException.haveNoPower();
- throw ex;
- } catch(MotanServiceException ex) {
- CatHelper.logEventService(serviceName + "-" + methodName, methodName, ex.getStatus(), ex.getErrorCode(), ex.getMessage());
- throw ex;
- } catch(MotanAbstractException ex) {
- CatHelper.logEventService(serviceName + "-" + methodName, methodName, ex.getStatus(), ex.getErrorCode(), ex.getMessage());
- throw ex;
- } catch(Exception ex) {
- CatHelper.logError(ex);
- throw ex;
- }
- }
- public static void tryCatch(Runnable runnable, String serviceName, String methodName) {
- tryCatch(() - >{
- runnable.run();
- return null;
- },
- serviceName, methodName);
- }
现在用起来是如此简洁。像这种无返回值的:
- public void authorizeRoleToUser(Long userId, List<Long> roleIds) {
- tryCatch(() -> { power.authorizeRoleToUser(userId, roleIds); }, "Power", "authorizeRoleToUser");
- }
还有这种有返回值的:
- public List < RoleDTO > listRoleByUser(Long userId) {
- return tryCatch(() - >power.listRoleByUser(userId), "Power", "listRoleByUser");
- }
这是我的第一篇Java文章。学习Java的过程中,既有惊喜,也有失望。以后会继续来分享心得。
Java:用Lambda表达式简化代码一例
来源: http://www.bubuko.com/infodetail-2297915.html