问题描述
好多的try{}catch(){}是代码看起来有些乱,怎么使代码变得整洁呢?@RequestMapping("/prpinsreport")publicvoidreceiveMsg(HttpServletRequestrequest,HttpServletResponseresponse){StringBufferreqXml=newStringBuffer();BufferedReaderreader=null;PrintWriterwriter=null;Stringline="";try{//1、获取请求报文try{reader=request.getReader();while((line=reader.readLine())!=null){reqXml.append(line);}}catch(IOExceptione){logger.error("获取请求报文失败:",e);}StringreqMsg=reqXml.toString();logger.debug("征信查询请求请求报文:"+reqMsg);InsReportReqBeaninsReportReqBean=newInsReportReqBean();try{insReportReqBean=(InsReportReqBean)genetor.xml2bean(reqMsg,InsReportReqBean.class);}catch(Exceptione){logger.error("转换报文失败",e);}//2、保存报文try{saveByFile(reqMsg,"req","InsReport");}catch(Exceptione){logger.error("保存征信查询的请求报文失败",e);}//3、业务处理InsReportRtnBeaninsReportRtnBean=null;try{insReportRtnBean=insReportService.doService(insReportReqBean);}catch(Exceptione){logger.error("业务处理失败",e);}//4、组织返回报文StringrtnMsg="";//返回报文StringxmlHead="<?xmlversion='1.0'encoding='"+ChartSet+"'?>";rtnMsg=xmlHead+genetor.bean2xml(insReportRtnBean);try{writer=response.getWriter();writer.println(rtnMsg);writer.flush();}catch(IOExceptione){logger.error("发送响应报文失败",e);}//5、保存响应报文try{saveByFile(rtnMsg,"rtn","InsReport");}catch(Exceptione){logger.error("保存征信查询的响应报文失败",e);}}catch(Exceptione){logger.error("业务处理异常",e);}finally{try{if(reader!=null){reader.close();}}catch(IOExceptione){logger.error("关闭连接异常:",e);}if(writer!=null){writer.close();}}}
解决方案
解决方案二:
合并成一个try-catchblock
解决方案三:
不怎么乱啊,看起来是每一个步骤都进行异常处理
解决方案四:
不乱,每一个try-catch的操作不一样,出现异常写日志的信息不一样,所以分开来写很好,合并了反而不好了。
解决方案五:
楼上两位版主看到女的来得真快啊!把你的代码整成这样就行了try{...//这里是你所有的代码}catch(xxExceptione){}catch(xxExceptione1){}catch(xxExceptione2){}finally{}
解决方案六:
感觉还好不怎么乱不然就一个try然后就是catchcatchcatch...
解决方案七:
习惯了就好了,JAVA就是这样的,代码有时候看起来会很臃肿不堪
解决方案八:
代码自己能看懂就行
解决方案九:
还小小女?问个问题还的带上性别?你以为是玩网游呢
解决方案十:
个人理解try-catch的使用原则是:在主逻辑处,可以按4L那样,一个try多个catch;在收尾处,比如要关闭资源了,最好每关一个资源,使用独立的try-catch,这样前面的资源关闭失败,不会影响后面的资源关闭。
解决方案十一:
还是可以的,很好理解!
解决方案十二:
引用4楼duanwu2330323的回复:
楼上两位版主看到女的来得真快啊!把你的代码整成这样就行了try{...//这里是你所有的代码}catch(xxExceptione){}catch(xxExceptione1){}catch(xxExceptione2){}finally{}
就这个!!!!!!!!!!!!!
解决方案十三:
不如把每个单独的方法里面返回异常时设置特定的异常信息在主方法内捕获后抛出e.getMessage()
解决方案十四:
引用12楼tian168no的回复:
不如把每个单独的方法里面返回异常时设置特定的异常信息在主方法内捕获后抛出e.getMessage()
这样子就不用去加那么多try{}catch(){}了
解决方案十五:
引用3楼jackwumengfeng的回复:
不乱,每一个try-catch的操作不一样,出现异常写日志的信息不一样,所以分开来写很好,合并了反而不好了。
就他这样写啊不过注意优先级别
解决方案:引用4楼duanwu2330323的回复:
楼上两位版主看到女的来得真快啊!把你的代码整成这样就行了try{...//这里是你所有的代码}catch(xxExceptione){}catch(xxExceptione1){}catch(xxExceptione2){}finally{}
就他这样写啊不过注意Exception的优先级别
解决方案:引用楼主u013116585的回复:
好多的try{}catch(){}是代码看起来有些乱,怎么使代码变得整洁呢?@RequestMapping("/prpinsreport")publicvoidreceiveMsg(HttpServletRequestrequest,HttpServletResponseresponse){StringBufferreqXml=newStringBuffer();BufferedReaderreader=null;PrintWriterwriter=null;Stringline="";try{//1、获取请求报文try{reader=request.getReader();while((line=reader.readLine())!=null){reqXml.append(line);}}catch(IOExceptione){logger.error("获取请求报文失败:",e);}StringreqMsg=reqXml.toString();logger.debug("征信查询请求请求报文:"+reqMsg);InsReportReqBeaninsReportReqBean=newInsReportReqBean();try{insReportReqBean=(InsReportReqBean)genetor.xml2bean(reqMsg,InsReportReqBean.class);}catch(Exceptione){logger.error("转换报文失败",e);}//2、保存报文try{saveByFile(reqMsg,"req","InsReport");}catch(Exceptione){logger.error("保存征信查询的请求报文失败",e);}//3、业务处理InsReportRtnBeaninsReportRtnBean=null;try{insReportRtnBean=insReportService.doService(insReportReqBean);}catch(Exceptione){logger.error("业务处理失败",e);}//4、组织返回报文StringrtnMsg="";//返回报文StringxmlHead="<?xmlversion='1.0'encoding='"+ChartSet+"'?>";rtnMsg=xmlHead+genetor.bean2xml(insReportRtnBean);try{writer=response.getWriter();writer.println(rtnMsg);writer.flush();}catch(IOExceptione){logger.error("发送响应报文失败",e);}//5、保存响应报文try{saveByFile(rtnMsg,"rtn","InsReport");}catch(Exceptione){logger.error("保存征信查询的响应报文失败",e);}}catch(Exceptione){logger.error("业务处理异常",e);}finally{try{if(reader!=null){reader.close();}}catch(IOExceptione){logger.error("关闭连接异常:",e);}if(writer!=null){writer.close();}}}
你这样写没什么意义啊所以的抛出异常都是Exception父类处理了
其他方案:
publicvoidreceiveMsg(HttpServletRequestrequest,HttpServletResponseresponse)throwsException{......就不用trycatch了....}
也可以写个总的trycatch。主要是这些失败都是不正常的。要有一个理解。
解决方案:
解决方案:解决方案是把你的方法精简下能抽的抽出来···
解决方案:引用8楼u012463264的回复:
还小小女?问个问题还的带上性别?你以为是玩网游呢
貌似事实就是这样