gpt4 book ai didi

java - 重构调用其他抛出异常的方法的方法

转载 作者:行者123 更新时间:2023-11-30 06:39:04 25 4
gpt4 key购买 nike

我有几个(超过 20 个)方法 (getXXX()) 在被调用时可能会抛出异常(NotCalculatedException)。

在另一种方法中,我需要访问这些方法给出的结果。目前,我有一个可怕的代码,看起来像:

public void myMethod() {
StringBuffer sb = new StringBuffer();
// Get 'foo' result...
sb.append("foo = ");
try {
sb.append(getFoo());
} catch (NotCalculatedException nce) {
sb.append("not calculated.");
}
// Get 'bar' result...
sb.append("\nbar = ");
try {
sb.append(getBar());
} catch (NotCalculatedException nce) {
sb.append("not calculated.");
}
...
}

如果不修改 getXXX 方法(因此他们必须保留他们的 throws NotCalculatedException),您将如何重构/简化 myMethod( ) 让它看起来更好?

请注意,该项目仍在使用 Java 1.4 :(


编辑

不能将所有getXXX() 方法放在try { ... } block 中,因为StringBuffer 将不完整,如果一种方法抛出 NotCalculatedException

public void myMethod() {
StringBuffer sb = new StringBuffer();
try {
sb.append("foo = ");
sb.append(getFoo());
sb.append("\nbar = ");
sb.append(getBar());
} catch (NotCalculatedException nce) {
sb.append("not calculated.");
}
...
}

换句话说,如果 getFoo() 抛出一个 NotCalculatedException,我想要这样的输出:

foo = not calculated
bar = xxx
...

如果我将所有内容都放在一个try { ... } 中,我将得到我不想得到的输出:

foo = not calculated

最佳答案

我认为您不应该使用 NotCalculatedException 来控制逻辑。

但我对此有一些想法。

  1. 你需要另一个getter方法

    sb.append(this.getFoo("未计算"));

  2. 创建 hasValue 方法

    sb.append(hasFoo()?this.getFoo():"未计算");

  3. 创建一个通用的 getter 方法

    sb.append(this.getValueByName("foo"));

关于java - 重构调用其他抛出异常的方法的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1427509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com