为什么最好不捕获通用类中的异常?

Joh*_*ohn 3 java exception-handling

当您为某些通用目的实现类时,为什么最好不捕获异常?

我想这是错误可以上升到堆栈并帮助调试过程.还有其他原因吗?

Dan*_*iel 10

这个规则应该更好地阅读:不要处理你不知道如何处理的异常!

例如,如果你编写一个读取CSV文件的类并返回该行的标记,那么你的类中会有一些可能抛出IOException的点.你绝对不应该抓住它,因为处理它不是你的责任!您的任务是将字节流转换为令牌流,仅此而已.如果有人将腐败的流传给你,这应由他处理,而不是你.

编辑:另一个例子:如果您的库例如到达SocketException,并且套接字已从调用者提供给lib,则向上传递SocketException.如果您的库只是一个抽象连接框架,它也可以连接到文件,内存等,并且SocketExceptions不常见,将它们包装在ConnectionException中.

  • 布洛赫并没有说"不要抛出异常",他说"抛出适合抽象的例外". (3认同)