Java - 摆脱NullPointerException

时间:2011-05-26 18:14:54

标签: java nullpointerexception

考虑两种情况case1和case2以及两种方法method1和method2。假设method1解决case1而method2求解case2。现在,我有一个可能以case1或case2结束的程序。在我的代码中,无论发生什么情况,我都会调用method1。但是,如果发生case2,则method1给出nullpointerexception。

我想要的是以下内容:我的代码应首先调用method1,如果发生异常,则调用method2。我该怎么办?由于我没有关于尝试和捕获的信息,我真的需要一些帮助!

2 个答案:

答案 0 :(得分:3)

你可以这样做:

    try {
        method1();
    }
    catch ( Exception e ) {
        method2();
    } 

尽管如此,通常只有在特殊情况下依赖异常才会更好。对于正常的控制流,您可以使用if:

    if ( isCase2() ) {
        method2();
    }
    else {
        method1();
    }

答案 1 :(得分:2)

捕捉NullPointerException是一个糟糕的实践 - 你可能没有抓住你想要抓住的特殊例外。您有两种选择:

1)抛出你自己的异常并稍后抓住它:

  public void method1(Case caze) throws MyException {
    if (case.getType() == CaseType.CaseOne) {
       // processing
    } else {
       throw new MyException("Wrong case type");
    }
  }

客户端代码:

try {
   method1(caze);
} catch (MyException e) {
   // log the excpetion
   method2(caze);
}

2)返回一个布尔标志,表示处理已成功完成。

请记住,分析值比使用try-catch机制更好。我会为你建议变种#2。