我正在处理一个消息库和一个对象的发送方法可能由于多种原因,如套接字被关闭等失败等。抛出一个始终链接的异常是否有意义?
我喜欢检查异常超过运行时异常,但我想知道是否那么应该更早地支持异常链接,这样基础异常总是被包含在另一个更普遍的异常中。
例如,一条消息可能只会抛出检查的SendFailedException
,但cause()
会更具体,如SocketClosedException
。这感觉就像它比单独抛出所有检查过的异常要少得多。
由于其他方法也可以抛出SocketClosedException
,所以继承并不适用于此。并非每个关闭的异常都是未能发送的结果。
将cause()
中的进一步信息包裹起来会不会更合适?我不记得在野外发现以这种方式运作的例外情况,这可能是非常规的,并且让其他人感到困惑。
Java或其他图书馆是否曾经这样做?对我的使用情况适合吗?
几乎每个具有正常检查(或未检查)异常的库都通过继承来定义它们自己的异常层次结构。每当需要重新抛出一个异常时,它应该被用作原因,因为这是它的目的。 – zapl
'并不是每个关闭的异常都是发送失败的结果。“你能举出一个例子:关闭的异常不是无法发送的吗? –
尝试在关闭后从套接字查询无效状态时,可能会抛出关闭的异常。 – Zhro