Java编码实践,运行时异常和此方案

Ber*_*own 3 java exception

在下面的场景中,我试图了解如何处理此代码以及它与Runtimexception的关系.我已经读过,通常更好的是抛出运行时异常,而不是依赖静态异常.甚至可能更好地捕获静态检查异常并抛出未经检查的异常.

是否存在可以捕获静态异常的情况,可能是catch-all Exception并且只处理异常.可能会记录错误消息并继续.

在下面的代码中,在execute1方法和execute2方法中,让我们说有易失性代码,你是否捕获静态异常然后重新抛出?或者可能还有其他错误:

if(null == someObj){throw new RuntimeException(); }

这是你使用的方法吗?

伪代码:

public class SomeWorkerObject {
  private String field1 = "";
  private String field2 = "";

  public setField1() { }
  public setField2() { }

  // Do I throw runtime exception here?
  public execute1() {
    try {
    // Do something with field 1
    // Do something with field 2
    } catch(SomeException) {
      throw new RuntimeException();
    }
  }

  // Do I throw runtime exception here?
  public execute2() {
    try {
    // Do something with field 1
    // Do something with field 2
    } catch(SomeException) {
      throw new RuntimeException();
    }

  }

}

public class TheWeb {

 public void processWebRequest() {

    SomeWorkerObject obj = new SomeWorkerObject();
    obj.setField1("something");
    obj.setField2("something");

    obj.execute1(); 
    obj.execute2();
    // Possibility that runtime exception thrown?

    doSomethingWith(obj);
 }
}
Run Code Online (Sandbox Code Playgroud)

我对这段代码有几个问题.有时我不想抛出runtimeexception,因为执行在调用方法中停止.似乎我在方法中捕获错误,也许我可以继续.但我会知道我是否可以继续参加该计划.

在上面的例子中,如果obj.execute1()抛出Runtimeexception,然后代码退出怎么办?

编辑:这家伙好像回答了我的很多问题,但我还是想听听你的意见.

http://misko.hevery.com/2009/09/16/checked-exceptions-i-love-you-but-you-have-to-go/

"检查过的异常迫使我写出没有意义的catch块:更多的代码,更难阅读,以及更高的机会,我将弄乱重新抛出逻辑并吃掉异常."

Boz*_*zho 15

捕获异常并抛出RuntimeException时,将原始异常设置为RuntimeException的原因非常重要.即

throw new RuntimeException(originalException).

否则你首先不会知道问题是什么.