我有这种方法。 问题是当满足这个条件时
if (bagList==null||bagList.size()<1 && UngarList==null||UngarList.size()<1 )
这是进入阻止区块
catch (Exception e) {
this.errorText = e.getMessage().toString();
info.setErrorText(this.errorText.toString());
response.setinfo(info);
}
但它仍在执行下一行
final boolean toProceedorNot = validate(bagList.toArray(new Bag[bagList.size()]))
如果符合要求则需要什么
if (bagList==null||bagList.size()<1 && UngarList==null||UngarList.size()<1 )
**then directly return the response;**
这是我的方法
public Response getData(Request request) {
Info info = new Info();
Response response = new Response();
String xmlrequest = request.getxmlMessage();
HashMap listMap = new HashMap();
List<Ungar> UngarList = new ArrayList<Ungar>();
List<Bag> bagList = new ArrayList<Bag>();
UniverseStaxParser xmlparser = new UniverseStaxParser();
try {
listMap = (HashMap) xmlparser.parseData(xmlrequest);
UngarList = (List<Ungar>) listMap.get("UngarItems");
bagList = (List<Bag>) listMap.get("bagItems");
if (bagList==null||bagList.size()<1 && UngarList==null||UngarList.size()<1 )
throw new Exception("No Valid Data is passed as Input ");
} catch (Exception e) {
this.errorText = e.getMessage().toString();
info.setErrorText(this.errorText.toString());
response.setinfo(info);
}
final boolean toProceedorNot = validate(bagList.toArray(new Bag[bagList.size()]));
try {
if (!toProceedorNot) {
info.setErrorText(errorText);
response.setinfo(info);
} else {
// some logic here goes
}
} catch (Exception e) {
errorText = e.getMessage().toString();
info.setErrorText(errorText);
response.setinfo(info);
}
return response;
}
答案 0 :(得分:6)
为什么不执行这些行?它们在try/catch
之外,没有什么能阻止正常的程序执行流程。
除非您从方法返回(或以其他方式更改控制流),否则将在catch
块之后的语句处继续执行。
如果要从catch块返回响应,请从Response
块返回catch
。
然而,我不相信这是一个很好用的通用Exception
。
答案 1 :(得分:1)
我必须认为你应该重新设计这部分软件:
if (bagList==null||bagList.size()<1 && UngarList==null||UngarList.size()<1 )
如果bagList
为null
,则在其上调用方法将引发异常。如果UngarList
为null
,则在其上调用方法将引发异常。实在没有必要。
不确定这些是null
- 上面几行,你为它们分配了新值,而且几乎立即覆盖了引用,失去了对新创建对象的引用。这似乎也不对。
找出哪些条件真正特殊,哪些条件可以发生 - 并尝试以简单的方式处理异常。