在我的应用程序中,我需要两个单独的ControllerAdvice注解类:其中一个处理特定的异常,另一个是一个默认处理程序,用于所有意外的异常。然而,它们共享一些自定义逻辑,用于从处理的异常构建ResponseEntity。
为了将代码保存在一个地方,并使共享逻辑对它们可用,我想将两个类作为静态嵌套类放入一个外部类中,如下所示:
public class ExceptionHandler {
private static ResponseEntity handleError(Exception ex, String message){
// shared exception handling
}
@ControllerAdvice
@Order(Ordered.HIGHEST_PRECEDENCE)
static class SpecializedExceptionHandler {
@ExceptionHandler
ResponseEntity handleMyException(MyException ex){
return handleError(ex, "Custom Exception");
}
}
@ControllerAdvice
static class DefaultExceptionHandler {
@ExceptionHandler
ResponseEntity handleAllOtherExceptions(Exception ex){
return handleError(ex, "Other Exception");
}
}
}
这似乎很好,我自己也无法提出反对它的论点,所以也许你可以帮助我。
1条答案
按热度按时间w9apscun1#
一般的智慧是代码单元(Java中的类)有一个单一的目的。虽然实现在技术上是单一的目的,但它们不必要地纠缠在同一个文件中共存。
最好把它们分开,像这样:
这也消除了
static
的使用,使它们更常规。如果你喜欢继承风格:
如果你更喜欢
static
方法风格: