2013-10-04 2 views
0

Я разрабатываю службу REST с использованием Spring MVC. Я пытаюсь реализовать обработку исключений с помощью @ExceptionHandler. Когда исключение выбрасывается из слоя REST, оно не перехватывается @ExceptionHandler. Я что-то пропустил?@ExceptionHandler не получает вызванное однократное исключение, выбрасывается из уровня REST

@Service 
@Path("/customer") 
public class CustomerResource extends BaseResource{ 

@Autowired 
private CustomerDao customerDao; 

........ 

@GET 
@Path("/customer/{accountNumber}") 
public Response findCustomerByAccountNumber(String accountNumber) throw Exception{ 
    Customer customer=null; 
    customer=customerDao.find(....); 
    if(customer==null) 
     throw new ResourceNotFoundException(); 
    else 
    .......... 

    } 
} 

Базовый класс, который имеет метод обработчика исключений

public abstract class BaseResource { 

....... 

@ExceptionHandler({ResourceNotFoundException.class })  
public Response handleException(Exception ex) { 
    ErrorResource errResource = new ErrorResource(); 
    ..... 
    return Response.status(Response.Status.NOT_FOUND).entity(errResource).build(); 
} 

} 

ответ

2

Вы метание ResourceNotFound, но указанный ResourceNotFoundException в обработчик исключений - это, кажется, разные исключения. Или бросьте ResourceNotFoundException вместо ResourceNotFound или добавьте ResourceNotFound в обработчик исключений.

EDIT: Не знаю, как я пропустил это сначала: просто заметил, что на самом деле вы не используете Spring MVC-контроллер. Обработчики исключений Spring MVC работают только для запросов, обрабатываемых контроллерами Spring MVC. Они обрабатывают исключения, которые происходят в теле методов обработчика контроллера. Кажется, вы используете что-то еще для обработки запросов REST.

+0

Извините, это была ошибка типографии. Я обновил сообщение – Pankaj

+0

Я обновил ответ ... –

+0

Вероятно, Джерси с интеграцией Джерси-Весна. Как говорится в обновленном ответе, обработка исключений Spring для Spring MVC, а не JAX-RS. OP будет необходимо реализовать 'javax.ws.rs.ext.ExceptionMapper' для пользовательской обработки исключений. –

Смежные вопросы