加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 05:22:08 所属栏目:Java 来源:网络整理
导读:在下面的场景中,我试图了解如何处理此代码以及它与Runtimexception的关系.我已经读过,通常更好的是抛出运行时异常,而不是依赖静态异常.甚至可能更好地捕获静态检查异常并抛出未经检查的异常. 是否存在可以捕获静态异常的情况,可能是catch-all 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);
 }
}

我对这段代码有几个问题.有时我不想抛出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).

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读