gpt4 book ai didi

java - 什么是静态异常检查和动态异常检查?

转载 作者:搜寻专家 更新时间:2023-11-01 03:08:16 25 4
gpt4 key购买 nike

在线论坛上有人提到 Java 的静态异常检查不是很好,会导致可伸缩性和版本控制问题。

我认为类函数的更改会抛出新的异常,破坏客户端代码可以归因于版本控制问题。但我不确定。

  • 静态异常检查的可伸缩性问题是什么?

  • 什么是动态异常检查?

最佳答案

当程序员无法抛出适合该方法的异常时,Java 中的已检查异常会导致可伸缩性问题。 (参见 Effective Java,第 43 项:抛出适合抽象的异常)。

懒惰的程序员倾向于将异常附加到他们方法的throws 子句中,而不考虑它们是否合适。因此,随着您在应用程序体系结构中看起来越来越高,方法会收集越来越多的异常。如果一个人不小心,顶级方法可能会抛出十个或更多异常。

例如,在设计用于加密数据的方法中,可能会抛出许多低级异常(例如 IOExceptionNoSuchAlgorithmExceptionKeyNotFoundException ...)。没有必要将这些公开给 API 用户。相反,可能会抛出 EncryptionFailed 异常,并将详细信息存储在异常的 cause 字段中。


我假设“动态异常检查”可能指的是捕获 ThrowableException(根类之一)并根据一些动态决定是否处理异常外部刺激。例如:

List<Class<?>> exceptionTypes = new ArrayList<>();
exceptionTypes.add(IllegalArgumentException.class);
exceptionTypes.add(IOException.class);

try {
// do something
} catch (Exception e) {
if (exceptionTypes.contains(e.getClass())) {
e.printStackTrace();
}
}

注意:上面的例子只是一个例子。但是想象一个 IDE 代表用户执行代码并允许他们选择他们希望捕获的异常类。

关于java - 什么是静态异常检查和动态异常检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15049511/

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