比如我這一段service中的代碼,到底是否應(yīng)該在整個(gè)service方法里面用一個(gè)trycatch將所有代碼全包裹起來(lái),還是在調(diào)用的地方捕捉一下?public ResultBean<VenueCardResponseEntity> getVenueCardList(VenueCardRequestEntity venueCard) { ResultBean<VenueCardResponseEntity> bean = new ResultBean<VenueCardResponseEntity>(); String queryVenueCardListResultStr = super.getRPCVenueServiceInstance().queryVenueCardList(JSON.toJSONString(venueCard)); if(StringUtils.isBlank(queryVenueCardListResultStr)){ bean.setCode(ErrorEnum.ERR_500.getIndex()); bean.setMsg("查詢(xún)失敗,服務(wù)層未返回結(jié)果!"); return bean; } PageDto<String> queryVenueCardPageDto; List<VenueCardResponseEntity> venueCardList; try { ResultDto<String> queryVenueCardListResult = JSON.parseObject(queryVenueCardListResultStr,ResultDto.class); if(!ErrorEnum.SUCCESS_200.getLongIndex().equals(queryVenueCardListResult.getCode())){ bean.setCode(queryVenueCardListResult.getCode()); bean.setMsg(queryVenueCardListResult.getErrMsg()); return bean; } queryVenueCardPageDto = JSON.parseObject(queryVenueCardListResult.getObject(),PageDto.class); if(!(queryVenueCardPageDto.getTotalItems() > Long.parseLong("0"))){ bean.setCode(ErrorEnum.SUCCESS_200.getIndex()); bean.setMsg("未查詢(xún)到符合條件的數(shù)據(jù)!"); return bean; } venueCardList = JSON.parseArray(queryVenueCardPageDto.getResult2(), VenueCardResponseEntity.class); } catch (JSONException e) { bean.setCode(ErrorEnum.ERR_500.getIndex()); bean.setMsg("查詢(xún)失敗,解析服務(wù)層返回值異常!"); return bean; }我在解析JSON的時(shí)候,try catch一下,只捕捉JSONException,是否還應(yīng)該再包裹一層捕捉exception的trycatch呢?還是應(yīng)該在action調(diào)用這個(gè)service時(shí)捕捉一下??
3 回答

侃侃爾雅
TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
action不應(yīng)該捕獲services層的異常
services應(yīng)該處理好自己的業(yè)務(wù)邏輯,放回一個(gè)結(jié)果對(duì)象,在結(jié)果對(duì)象中告訴調(diào)用方services執(zhí)行的結(jié)果及返回的數(shù)據(jù)內(nèi)容。
dao層也是同樣處理~
這樣接口清晰~,要不你的告訴你的調(diào)用方我可能會(huì)拋出什么的異常,什么樣的異常代表什么樣的業(yè)務(wù)含義
添加回答
舉報(bào)
0/150
提交
取消