在尝试捕获方法之后是否有更好的解决方案(不)继续?

时间:2017-01-28 20:10:16

标签: java methods try-catch

现在我的解决方案如下:

public void method() {
  int number;
  boolean continue = true; 
  try {
     number = parseInt(this.something);
  } catch (NumberFormatException e) {
     //some code
     continue = false;
  }

  if (continue) {
    //more code
  }
}

那里有更漂亮的东西吗?

5 个答案:

答案 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()