gpt4 book ai didi

java - 你如何记录未经检查的异常?

转载 作者:IT老高 更新时间:2023-10-28 20:35:31 34 4
gpt4 key购买 nike

Joshua Bloch 在其 Effective Java 中写道:

"使用 Javadoc @throws 标记记录每个未检查的异常方法可以抛出,但不要使用 throws 关键字来包含未选中方法声明中的异常。 "

这听起来确实很合理,但是如何找出我的方法会抛出哪些未经检查的异常?

让我们考虑以下类:

public class FooClass {

private MyClass[] myClass;

/**
* Creates new FooClass
*/
public FooClass() {
// code omitted
// do something with myClass
}

/**
* Performs foo operation.<br />
* Whatever is calculated.
* @param index Index of a desired element
* @throws HorribleException When something horrible happens during computation
*/
public void foo(int index) {
try {
myClass[index].doComputation();
} catch (MyComputationException e) {
System.out.println("Something horrible happened during computation");
throw new HorribleException(e);
}
}
}

现在,我记录了 HorribleException,但很明显,foo 方法也可以抛出未经检查的 java.lang.ArrayIndexOutOfBoundsException。代码越复杂,就越难考虑该方法可以抛出的所有未经检查的异常。我的 IDE 对我没有多大帮助,任何工具也没有。因为我不知道任何工具...

遇到这种情况你是怎么处理的?

最佳答案

只记录那些你明确抛出自己或通过其他方法传递的内容。剩余部分将被视为错误,需要通过良好的单元测试和编写可靠的代码来修复。

在这种特殊情况下,我会将 ArrayIndexOutOfBoundsException 视为 您的代码中的一个错误,并且我会相应地修复代码,使其永远不会抛出它。 IE。添加检查数组索引是否在范围内,并通过抛出异常(您记录的异常)或采用替代路径进行相应处理。

关于java - 你如何记录未经检查的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3746884/

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