当代码中使用递归时碰到了想中途退出递归,但是代码继续执行的情况,在这里和大家分享一下我的处理方法。
private List<UserInfo> findAllContactDown(List<UserInfo> userInfoList,UserInfo userInfo) throws Exception{ List<UserInfo> infoList= new ArrayList<UserInfo>(); if (BL3Utils.isNotEmpty(userInfoList)) { for (UserInfo info:userInfoList) { if(info.getId().equals(userInfoDown.getId())){ throw new Exception(JSON.toJSONString(userInfoList)); //抛出异常 } infoList.addAll(findAllContact(infoList,info)); } for (UserInfo info:userInfoList) { findAllContactDown(infoList,userInfo); } }else{ throw new Exception(JSON.toJSONString(null)); //抛出异常 } return infoList; }这里很显然了,就是抛了一个异常。
调用递归的时候try catch一下就好了
try { findAllContactDown(userInfoListOne,userInfo); } catch (Exception e) { userInfoListOne = JSON.parseArray(e.getMessage(), UserInfo.class); }