当代码中使用递归时碰到了想中途退出递归,但是代码继续执行的情况,在这里和大家分享一下我的处理方法。
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);
}