现在我的解决方案如下:
public void method() {
int number;
boolean continue = true;
try {
number = parseInt(this.something);
} catch (NumberFormatException e) {
//some code
continue = false;
}
if (continue) {
//more code
}
}
那里有更漂亮的东西吗?
答案 0 :(得分:2)
即使它是void
方法,您也可以使用return;
然后退出该方法。因此,一个完美的解决方案可以解决您的问题"只是使用return
并删除if
,如下所示:
public void method() {
int number;
try {
number = parseInt(this.something);
} catch (NumberFormatException e) {
//some code
return;
}
//more code
}
答案 1 :(得分:2)
在方法中尝试捕获后,是否有更好的解决方案(不)继续?
预期的方法是编写应在try块中跳过的代码:
public void method() {
try {
int number;
number = parseInt(this.something);
//more code
} catch (NumberFormatException e) {
// log exception
// do things to recover from the error if possible
// maybe rethrow `e` or throw another exception
}
// avoid to write some code here, usually it is wrong.
}
答案 2 :(得分:1)
如果对象设置不正确(this.something未设置),则最好在调用代码中抛出catch。如果您刚刚返回,则调用者可能会认为该方法已成功完成。否则,Aidin提供的代码将起作用。
答案 3 :(得分:0)
您可以简单地忽略该异常并记录异常以供参考:
public void method() {
int number;
try {
number = parseInt(this.something);
} catch (Exception ignored) {
// here could be some System.out.println or a logging API
}
}
但是如果你有一个返回,只需返回null并评估你的结果是否为null。
public Integer method() {
try {
return parseInt(this.something);
} catch (Exception ignored) {
// here could be some System.out.println or a logging API
}
return null;
}
Integer number = method();
if (number != null) {....
答案 4 :(得分:-1)
你可以使用retun;打破;或者可能是System.exit()