tl; dr Mutlicatch单手处理事情,多个catch块更灵活,操作更方便。可以将两种技术结合起来。
如果您有一个try语句可以引发许多不同的异常类型,则需要多个catch块。它的代码更多,但提供了更大的灵活性。
例如,如果使用套接字,则可能仅通过重新连接和/或错误消息而捕获到SocketException(就像无意中断开电缆那样简单)
如果捕获到一个空指针异常(尽管未检查),则您将要写入日志并在此处紧急着陆,清理您可以执行的操作,并可能在代码上进行一些回溯。
此外,这可以进一步细分,其中不同类型的“常见”异常可能会导致采取不同的操作(例如,连接丢失与名称未解析会在首次连接尝试中对最终用户产生不同的影响),并且不同的“重”异常也以不同的方式处理。
虽然你可以有一个(多个异常类型)catch块,它要么一手承担(基于电缆被拔出以同样的方式呈现一个空指针异常给用户作为条件)的所有异常类似的行动或要求
ife instanceof FooException块是会降低可读性。
您也可以将两者结合在一起,将所有“常见”异常多捕获为重试和优美的消息,并将所有严重异常多捕获为强制清除和关闭
您不需要跳线的堆栈跟踪,也不需要清除丢失的对象。



