Вы можете создать предопределенную карту определенного типа исключения для сообщения, которое вы хотите отобразить:
private Map<Class<?>, String> exceptionMessages = ...;
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object obj, Exception e) {
if exceptionMessages.containsKey(e.getClass()) {
displayMessage(exceptionMessages.get(e.getClass()));
}
else {
// what to do by default?
}
return ...;
}
Или, что еще лучше, вы можете экспортировать карту в файл свойств или ResourceBundle, чтобы вы могли загрузить видимую пользователю строку из какого-то другого места, кроме кода (и / или глобализировать ее).
Этот пример кода не может использовать одно и то же сообщение для иерархии типов исключений, но будет довольно просто пройти цепочку наследования, если прямой класс не найден на карте.