Я реализую веб-сервис API REST, который извлекает данные из базы данных MySql.Здесь здесь написано, что нам не нужно явно обрабатывать исключение из базы данных.У меня есть блоки catch в слое Service .У меня есть следующие вопросы.
1- Как отправить соответствующее сообщение об ошибке в соответствующий вид модели из блока catch?
2- Является ли Service правильным уровнем для перехвата исключения?
У меня есть следующий код
Контроллер
@RequestMapping(value = "/saveUser", method = RequestMethod.POST)
public ModelAndView saveUser(@ModelAttribute User user, BindingResult result)
{
ModelAndView mv = new ModelAndView();
validator.validate(user, result);
if(result.hasErrors()) {
mv.setViewName("addUser");
}
else {
service.saveUser(user);
mv.setViewName("redirect:/users/listAllUsers");
}
return mv;
}
Сервис
public void saveUser(User user) {
try {
userDao.saveUser(user);
} catch(DuplicateKeyException e) {
//Here i want to send "User already exist"
} catch(DataAccessException e) {
//Here i want to send "Databae unreachable"
}
}
UserDAO
public void saveUser(User user) {
String sql = "INSERT INTO User (fname, lname, address, phone)"
+ " VALUES (?, ?, ?, ?)";
jdbcTemplate.update(sql, user.getFname(), user.getLname(),
user.getAddress(), user.getPhone());
}
}