为什么Exception将Throwable作为构造函数参数而不是Exception?

Sam*_*her 7 java constructor class-design exception-handling

我最近注意到Exception有几个构造函数Throwable作为参数.Throwable有两个子类,Error并且Exception,通常所有文档都表明你不应该尝试捕获或处理Error.因此,我很好奇为什么Exception把a Throwable作为构造函数参数而不是Exception.这意味着Exception可以使用原因创建一个Error,并且可以由应用程序处理.为什么会这样?

那么自定义Exception类是否只提供Exception作为参数的构造函数?

man*_*uti 4

我想这基本上是因为:

  1. 不建议处理 anError但并不禁止

  2. 无论如何,对接口进行编程是一个很好的做法,因此参数类型应该通过将其作为根接口来支持最广泛的类型Throwable