我的应用程序使用配置文件,其中包含许多可配置项。
例如,您可以指定一个自定义密钥库,其中包含用于WebService连接的自定义别名(而不是默认的JVM javax.net.ssl.keystore
)。
在运行时,我们可能会发现密钥库中不存在此别名,因此我们可能希望抛出异常。因为这是应用程序的一个关键部分(我们不能指望应用程序在配置修复之前正常运行),我想在这里抛出一个未经检查的异常是一个好主意。
我是这样思考的吗?
在这种情况下创建自定义ConfigurationException
(扩展RuntimeException
)是否有意义?
答案 0 :(得分:2)
Checked Exceptions被抛出以通知方法的用户该方法可能抛出特定异常。这样,当我们得到该异常时,用户可以决定该做什么。
如果您的要求是"除非配置正确,否则应用程序不应继续进行。并且没有方法用户可以运行来绕过它(在try-catch块中)然后我没有看到任何理由使它成为一个已检查的异常(如果我们知道它没用,为什么要让用户做不必要的工作)。 / p>
所以,在这种情况下,我也会选择未经检查的例外。
答案 1 :(得分:0)
我认为您应该创建一个已检查的异常,当您捕获它时,在显示消息之后在catch块中结束该程序。未经检查的异常是针对编程错误的,应由开发人员更正。检查异常是针对可能发生的情况,但我们无法控制它。您知道配置文件可能已损坏,但您无法阻止它发生并无法控制它。我会选择检查异常。
答案 2 :(得分:0)
未经检查的异常表示程序中存在错误或系统错误。例如,ArrayIndexOutOfBoundsException
或NullPointerException
不应出现在程序中,如果出现,则通常会指出错误。
验证用户输入时,无论是通过配置文件直接输入用户还是用户输入,异常都不表示存在错误。因此,它应该是一个经过检查的异常,以提醒调用您的方法的程序员不会发生异常并且必须被捕获。通过捕获异常,您可以生成一个用户友好的错误消息,指出解决方案。 (您不希望最终用户看到Java生成的Exception in thread ...
消息!)