Мне интересно, что было бы более чистым способом справиться с этой связкой if
предложений.В качестве дополнительной информации это обработчик исключений, который будет использоваться в учебном проекте Spark Framework.
Этот фрагмент кода выполняет свою работу и доступен для чтения, но возможное дальнейшее расширение превратит его в монстра.Есть ли у вас какие-либо предложения по его рефакторингу?
public ExceptionHandler<? super java.lang.Exception> handler() {
return (e, request, response) -> {
ErrorMessage error;
if (e instanceof SomeException1) {
response.status(422);
error = new ErrorMessage("message1", e.getMessage());
} else if (e instanceof SomeException2) {
response.status(404);
error = new ErrorMessage("message2", e.getMessage());
} else if (e instanceof SomeException3) {
response.status(500);
error = new ErrorMessage("message3", e.getMessage());
} else {
response.status(500);
error = new ErrorMessage("message4", e.getMessage());
}
[...]
};
}
Редактировать для уточнения:
Этот фрагмент кода является частью метода обработчика исключений, который зарегистрирован в основном классе приложения с помощью Spark's exception()
метод.Примерно так:
public class MainClass {
public static void main(String[] args) {
//register the exception handler
exception(Exception.class, errorsHandler.handler()); //handler() is the method showed above.
}
}