如何在 java 中组织大型项目的异常处理?
How to organize exception handling in java on large projects?
我熟悉异常处理的基础知识,包括 try
、catch
、throw
和 throws
关键字。
我的问题是关于在大型项目中应该如何组织他的异常处理。我找不到一本书或资源来解释如何以“标准”方式实现异常,我找到的每一个资源都只教你基础知识。
例如我应该把 try-catch 块放在哪里?如果我们想象一个方法链,链的顶部 link 是主要的,底部是抛出异常的方法是否有关于 try-catch 块应该在哪里的约定?
- 主要是?
- 在调用抛出异常的方法的方法中?
- 介于两者之间?
谢谢。
根据所使用的结构化方法,这个问题可能会得出自以为是的答案。但我可以分享我遵循的标准或我的团队遵循的标准,这似乎非常有效和合理。
我们在编写任何代码之前都会做出一些标准假设
- 一个方法负责单一职责。 (与 class 的 SR 内联)
- 方法 returns 预期输出或引发异常。
- 我们有一组自定义异常 classes,其父级 class 从 Exception / Throwable 扩展而来,适用于每个独特的错误场景
这些假设/规则不仅帮助我们在异常方面构建代码,而且还帮助我们拥有更好的可维护代码库。考虑到异常处理,请牢记假设,
- 方法体写在一个 try/catch 块中,它可能会捕获所有可能的异常(不是 RuntimeException / Exception / Throwable)
- 可以通过与上下文相关的方法引发自定义异常,其中包含消息、错误代码或自定义异常库中定义的更多信息等参数。
- 最顶层的应用程序将捕获基本自定义异常,并可以相应地处理消息和代码。该层还将捕获一个 Throwable,以捕获所有其他异常,并在 REST API.
的情况下执行类似发送 500 的操作
在任何情况下,应用程序都不会崩溃。所以 IMO,每个具有逻辑上下文的方法都应该使用 try/catch 块并引发面向上下文的异常。上面的层可以捕获这样的异常,然后进一步自定义异常或在需要时抛出不同的异常。
我熟悉异常处理的基础知识,包括 try
、catch
、throw
和 throws
关键字。
我的问题是关于在大型项目中应该如何组织他的异常处理。我找不到一本书或资源来解释如何以“标准”方式实现异常,我找到的每一个资源都只教你基础知识。
例如我应该把 try-catch 块放在哪里?如果我们想象一个方法链,链的顶部 link 是主要的,底部是抛出异常的方法是否有关于 try-catch 块应该在哪里的约定?
- 主要是?
- 在调用抛出异常的方法的方法中?
- 介于两者之间?
谢谢。
根据所使用的结构化方法,这个问题可能会得出自以为是的答案。但我可以分享我遵循的标准或我的团队遵循的标准,这似乎非常有效和合理。
我们在编写任何代码之前都会做出一些标准假设
- 一个方法负责单一职责。 (与 class 的 SR 内联)
- 方法 returns 预期输出或引发异常。
- 我们有一组自定义异常 classes,其父级 class 从 Exception / Throwable 扩展而来,适用于每个独特的错误场景
这些假设/规则不仅帮助我们在异常方面构建代码,而且还帮助我们拥有更好的可维护代码库。考虑到异常处理,请牢记假设,
- 方法体写在一个 try/catch 块中,它可能会捕获所有可能的异常(不是 RuntimeException / Exception / Throwable)
- 可以通过与上下文相关的方法引发自定义异常,其中包含消息、错误代码或自定义异常库中定义的更多信息等参数。
- 最顶层的应用程序将捕获基本自定义异常,并可以相应地处理消息和代码。该层还将捕获一个 Throwable,以捕获所有其他异常,并在 REST API. 的情况下执行类似发送 500 的操作
在任何情况下,应用程序都不会崩溃。所以 IMO,每个具有逻辑上下文的方法都应该使用 try/catch 块并引发面向上下文的异常。上面的层可以捕获这样的异常,然后进一步自定义异常或在需要时抛出不同的异常。