java.lang.Exception与滚动自己的异常


问题内容

与使用java.lang.Exception相比,您将在什么时候创建自己的异常类?(一直吗?仅在包外使用吗?仅当它必须包含高级逻辑时?等)


问题答案:

我认为您需要问自己一个完全不同的问题:“创建新异常给我或使用我的代码的开发人员有什么优势?”
实际上,它给您或其他人带来的唯一好处就是能够处理异常。这似乎是一个显而易见的答案,但实际上并非如此。您应该只处理可以合理恢复的异常。如果您抛出的异常是一个真正的致命错误,为什么要给开发人员一个错误处理的机会?

更深入的讨论:自定义例外:应该何时创建它们?