Misaya_D 2019-01-05 19:51 采纳率: 0%
浏览 404

Java中如何做到优雅的异常保护?

有一段类似的代码如下所示:

public ModelAndView redirectCallback(String code, String state) {
        if (code == null || state == null || code.isEmpty() || state.isEmpty()) {
            SystemUtils.error("获取 code 或 state 参数异常 ; QueryString : " + service.getQueryString() + " ; RemoteIp : " + service.getClientIp());
            return service.returnErrorPage("参数获取异常 请联系管理人员处理");
        }

        String[] states = state.split(SPLIT);

        if (states.length != PARAM_NUMBER) {
            SystemUtils.error("参数 state 不符合要求 ; QueryString : " + service.getQueryString() + " ; RemoteIp : " + service.getClientIp());
            return service.returnErrorPage("参数 state 不符合要求 请联系管理人员处理");
        }

        String combinationMd5 = states[0];
        String sessionCode = states[1];

        if (combinationMd5 == null || sessionCode == null || combinationMd5.isEmpty() || sessionCode.isEmpty()) {
            SystemUtils.error("参数 state 解析失败 ; QueryString : " + service.getQueryString() + " ; RemoteIp : " + service.getClientIp());
            return service.returnErrorPage("参数 state 解析失败 请联系管理人员处理");
        }

        String redirectUri = null;
        Integer groupId = null;
        try {
            SysDingtalkSystem dingtalkSystem = dingtalkMapper.queryDingtalkSystem(combinationMd5);
            if (dingtalkSystem != null) {
                redirectUri = dingtalkSystem.getRedirectUri();
                groupId = dingtalkSystem.getGroupId();
            }
        } catch (Exception e) {
            SystemUtils.error("回调 URL 获取异常 数据查询异常 ; QueryString : " + service.getQueryString() + " ; RemoteIp : " + service.getClientIp(), e);
            return service.returnErrorPage("回调 URL 获取异常 请联系管理人员处理");
        }

        if (redirectUri == null || redirectUri.isEmpty() || groupId == null) {
            SystemUtils.error("回调 URL 获取失败 redirectUri 或 groupId 为空 ; QueryString : " + service.getQueryString() + " ; RemoteIp : " + service.getClientIp());
            return service.returnErrorPage("回调 URL 获取失败 请联系管理人员处理");
        }
        ...
    }

这里能够看出来,代码中判断异常情况的地方非常多,例如判断null,异常保护等,有没有什么优雅的写法?

  • 写回答

1条回答 默认 最新

  • 可爱的小书包 2019-01-05 22:24
    关注

    1.null可以考虑optional类,java8新引入的,如果没有,可以考虑jdk7里面的Objects工具类
    2.异常,需要在传入值得时候就全部判断ok,再传入,如果实在没办法返回值,也可以返回一个空值,但是不要返回null

    评论

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R