gpt4 book ai didi

java - 当调用者对每个异常句柄应用相同的操作时捕获非特定异常

转载 作者:行者123 更新时间:2023-11-29 03:59:13 24 4
gpt4 key购买 nike

我必须根据运行时配置动态实例化某个类。因此,我需要调用方法 newInstance() 并相应地处理异常:

try {
clazz.newInstance();
} catch (InstantiationException ex) {
logger.error(ex, ex);
throw new RuntimeException(ex);
} catch (IllegalAccessException e) {
logger.error(ex, ex);
throw new RuntimeException(ex);
}

在我的代码中,处理此异常的唯一方法是尝试记录错误并向用户显示友好消息(将异常重新抛出为运行时, View 层将捕获运行时异常)

<exception class="java.lang.Exception">
<redirect view-id="/error.xhtml" />
</exception>

要点是,如果我无法合理地恢复调用方法 newInstance() 时抛出的任何异常的错误,并且对每个异常应用相同的操作(记录并重新抛出异常) , 是一种更好的方法来替换上面处理非特定异常的代码,例如:

try {
clazz.newInstance();
} catch (Exception ex) {
logger.error(ex, ex);
throw new RuntimeException(ex);
}

最佳答案

不幸的是,这是 Java 的限制。我相信 Java 7 可能会解决这个问题。

然而,在那之前,您将面临两个令人不快的选择:

  1. 捕获每个异常并剪切并粘贴行为。
  2. 捕获Exception 并编写一次行为。

我个人更喜欢 1。它们都很讨厌,但至少在 1 中,当你在某处抛出 SomeCrazyException 时,你不会发生奇怪的事情。

关于java - 当调用者对每个异常句柄应用相同的操作时捕获非特定异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4485640/

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