gpt4 book ai didi

java - 以编程方式区分异常

转载 作者:行者123 更新时间:2023-12-02 00:56:14 24 4
gpt4 key购买 nike

异常的类型通常足以正确处理它(例如,您尝试打开文件并得到FileNotFoundException)。但是,在某些情况下,您可能会捕获同一类型的多个异常。例如,可能由多个参数引起的 IllegalArgumentExceptionIllegalArgumentException 不会向 Throwable 接口(interface)添加任何其他方法(或公共(public)字段)(根据在线 javadoc ),这意味着您可以依赖的唯一信息上面是嵌套异常(可能存在也可能不存在)和消息(供人类使用)。

我不喜欢扩展 IllegalArgumentException 来向其中添加结构化信息的想法,因为其他人必须学习新类。我不喜欢用非常具体的异常类乱扔项目的想法。使用消息字段也是一个坏主意,因为它不适合编程访问。

我认为 IllegalArgumentException 应该包含相关的类函数和参数等详细信息。一般来说,自定义异常应该提供额外的详细信息(除了它们的类型)以进行更细粒度的异常处理。

设计异常类和处理相同类型异常的最佳实践通常被认为是什么?

最佳答案

作为一般规则,我认为每个“调用者可能合理地想要采取的操作类型”都有一类异常是理想的。当然,对于自己的自定义异常,可能有一个 boolean 值或枚举字段提供一些额外的歧义,而不是创建简单的子类。

在您的具体情况下,我不相信尝试处理异常是一个好主意。 RuntimeException及其子类通常代表编码问题,IllegalArgumentException也是如此。如果参数非法,则不应首先将其传入。

如果您不确定某个参数是否有效(可能是用户输入,或者您不知道调用该方法的特定对象) on)那么更好的方法是在传递参数之前通过某种方式检查参数的有效性。不要说“这样做”并捕获异常,而是问“我可以这样做吗?”在打电话之前。

关于java - 以编程方式区分异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19356870/

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