Java编码实践,运行时异常和此方案
在下面的场景中,我试图了解如何处理此代码以及它与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); } } 我对这段代码有几个问题.有时我不想抛出runtimeexception,因为执行在调用方法中停止.似乎我在方法中捕获错误,也许我可以继续.但我会知道我是否可以继续参加该计划. 在上面的例子中,如果obj.execute1()抛出Runtimeexception,然后代码退出怎么办? 编辑:这家伙好像回答了我的很多问题,但我还是想听听你的意见. http://misko.hevery.com/2009/09/16/checked-exceptions-i-love-you-but-you-have-to-go/ “检查过的异常迫使我写出没有意义的catch块:更多的代码,更难阅读,以及更高的机会,我将弄乱重新抛出逻辑并吃掉异常.” 解决方法
捕获异常并抛出RuntimeException时,将原始异常设置为RuntimeException的原因非常重要.即
抛出新的RuntimeException(originalException). 否则你首先不会知道问题是什么. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |