我有这样的条件
String str = null;
try{
...
str = "condition2";
}catch (ApplicationException ae) {
str = "condition3";
}catch (IllegalStateException ise) {
str = "condition3";
}catch (Exception e) {
str = "condition3";
}
if(str == null){
str = "none";
}
现在我想在一行中总结所有str = "condition3";
。最后,块总是运行,以至于无法满足我的需求。还有什么可以做的。
答案 0 :(得分:6)
从Java 7开始,您可以在一个catch
块中catch multiple exception types。代码看起来像这样:
String str = null;
try {
...
str = "condition2";
} catch (ApplicationException|IllegalStateException|Exception ex) {
str = "condition3";
}
BTW:您发布的代码以及我的Java 7代码都可以简化为catch (Exception e)
,因为Exception
是ApplicationException
和{{}的超类3}}
答案 1 :(得分:2)
您可以使用Java 7异常处理语法。 Java 7在一个catch块中支持多个Exception处理。 Exp -
String str = null;
try{
...
str = "condition2";
}catch (ApplicationException | IllegalStateException | Exception ae) {
str = "condition3";
}
答案 2 :(得分:1)
try{
...
str = "condition2";
}catch (Exception ae) {
str = "condition3";
}
因为所有其他人都是例外的子类。如果您想显示不同的消息,可以尝试按照
try{
...
str = "condition2";
}catch(ApplicationException | IllegalStateException e){
if(e instanceof ApplicationException)
//your specfic message
else if(e instanceof IllegalStateException)
//your specific message
else
//your specific message
str = "condition3";
}
答案 3 :(得分:1)
如果您使用Java 7功能在单个catch块中捕获多个异常,则必须添加“final”关键字
catch (final ApplicationException|IllegalStateException|Exception ex) {
答案 4 :(得分:0)
正如您在ApplicationException
和IllegalStateException
捕获块以及一般异常Exception
捕获阻止中执行相同操作一样,您可以删除ApplicationException
和IllegalStateException
块。
答案 5 :(得分:0)
我将在这里出去并提供这个:
String str = null;
try{
...
str = "condition2";
}catch (Throwable e) {
str = "condition3";
}
finally {
if(str == null){
str = "none";
}
}
如果这不是“总结”的意思,那么请澄清。
请阅读
http://www.tutorialspoint.com/java/java_exceptions.htm http://docs.oracle.com/javase/tutorial/essential/exceptions/