• 反射抛出异常,如何确定异常类型


    参考代码:

    private String invokeMethod(ForeignService foreignService, Map<String, Object> paramMap) throws Exception {
    Object resultObj = null;
    try {
    Object bean = SpringUtil.getBean(foreignService.getHandlerService());
    Class beanClass = bean.getClass();
    Method method = beanClass.getMethod(foreignService.getHandlerMethod(),ForeignService.class, Map.class);
    if (Assert.checkParam(paramMap)) {
    resultObj = method.invoke(bean, foreignService,paramMap);
    }
    } catch (Exception e) {
    LOG.error("调用外部接口反射异常,foreignServiceId={}", foreignService.getId());
    throw e;
    }
    return (String)resultObj;
    }

    外部调用以上方法时, try catch 需要这样写:

    } catch (Exception ex) {
    ex.printStackTrace();
    resultLevel = RuleLevelEnum.ERROR.getStatus();
    LOG.error("xxx:{}", ex.getMessage());
    resultDetailMap.put("errMsg", "xxx");
    if(ex instanceof InvocationTargetException) {
    InvocationTargetException targetEx = (InvocationTargetException)ex;
    Throwable t = targetEx .getTargetException();
    if(t instanceof BussinessException) {
    // xxx
    resultLevel = RuleLevelEnum.WARNING.getStatus();
    BussinessException bussinessEx = (BussinessException)t;
    if (bussinessEx.getErrCode() == BussinessExceptionEnum.INTERFACE_TIMEOUT.getCode()) {
    interfaceExceptionFlag = Boolean.TRUE;
    resultDetailMap.put("errMsg", "xxx");
    }
    if (bussinessEx.getErrCode() == BussinessExceptionEnum.INTERFACE_EXCEPTION.getCode()) {
    interfaceExceptionFlag = Boolean.TRUE;
    resultDetailMap.put("errMsg", "xxx");
    }
    }
    }
    }

  • 相关阅读:
    InfinityHook原理
    段描述符
    从零到一k8s(十)ipv4,ipv6 双网卡部署k8s
    python自动化测试工具selenium使用指南
    elementui去掉弹框的黑色罩子
    linuxjenkins安装
    pythonlogging模块记录日志
    redisredis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snap
    shell将文件上传至ftp
    git记录文档
  • 原文地址:https://www.cnblogs.com/maohuidong/p/10728385.html
Copyright © 2020-2023  润新知