在下面的场景中,我试图了解如何处理此代码以及它与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).
否则你首先不会知道问题是什么.
| 归档时间: |
|
| 查看次数: |
7041 次 |
| 最近记录: |