Java中的子类化异常:何时不是自定义消息"足够好"?

Qui*_*ncy 2 java exception

这是最佳实践问题.

我目前正在使用旧的Java代码.我看到很多Exception的子类只覆盖了构造函数.我不确定是否有任何像这样的子类化Exception的实际用法.我认为只是调用Exception构造函数并传入消息将同样有效,并且不会有很多子类.守则是责任.

DNA*_*DNA 11

子类化的关键在于您的代码可以区分不同类型的故障并以不同方式对待它们.如果您只是更改消息,那么人类可以在日志中区分它们,但这就是全部.

如果您看到的异常实际上并没有以不同的方式处理,而只是陷入了一个全能状态,catch(Exception e)那么也许有人对子类过于热心,但是通常有用的是干净地分离代码层并确定哪些类应该处理哪种问题.

例如,一种类型的异常可能表示超时,并且可能适合在短暂延迟后重试,而另一种类型的异常表示不可恢复的故障(可能是无效的查询),必须将其提升到更高级别或或许向用户表明.