异常的类型通常足以正确处理它(例如,您尝试打开一个文件并获取一个FileNotFoundException
)。但是,在某些情况下,您可能会捕获多个相同类型的异常。例如,一个IllegalArgumentException
可能由多个参数引起的。IllegalArgumentException
不会向接口添加任何其他方法(或公共字段) (根据Throwable
在线javadoc),这意味着您可以依赖的唯一信息是嵌套异常(可能存在也可能不存在)和消息(供人食用)。
我不喜欢扩展IllegalArgumentException
以向其中添加结构化信息的想法,因为其他人必须学习新课程。而且我不喜欢用非常具体的异常类乱扔项目的想法。使用消息字段也是一个坏主意,因为它不适合编程访问。
我认为IllegalArgumentException
应该包括详细信息,例如有问题的类函数和参数。一般来说,自定义异常应该提供额外的细节(除了它们的类型之外),以便进行更细粒度的异常处理。
通常认为设计异常类和处理相同类型异常的最佳实践是什么?