Рассмотрим сценарий, в котором мы должны запустить цикл с 10 сообщениями. Во время итерации, если 5-е сообщение не удается из-за какого-то исключения, запрос направляется в Global Exception Handler. Из-за этого остальные сообщения не обрабатываются.
Как обработать исключение в этом сценарии, а также пропустить те, которые терпят неудачу из-за некоторого исключения, и обработать остальные сообщения.
Глобальный обработчик исключений с помощью Spring
@EnableWebMvc
@ControllerAdvice
public class ExceptionHandlerUtil
{
public static final Logger LOGGER = Logger.getLogger( ExceptionHandlerUtil.class.getPackage().getName() );
@ExceptionHandler( Exception.class )
public @ResponseBody ExceptionDTO commonExceptionHandler( Exception e , HttpServletRequest request , HttpServletResponse response ) throws IOException, JSONException
{
LOGGER.log( Level.SEVERE , FullHistoryUtil.printException( e ) );
ExceptionDTO exceptionDTO = new ExceptionDTO();
exceptionDTO.setStatus( 500 );
exceptionDTO.setMessage( e.toString() );
response.setStatus( 500 );
NotificationServiceImplementation notificationService = new NotificationServiceImplementation();
notificationService.sendExceptionNotification( e , request , 86400 , true );
return exceptionDTO;
}
Наш Контроллер
@RequestMapping( value = “/messages/bulk” , method = RequestMethod.POST , consumes = "application/json; charset=utf-8" )
public @ResponseBody InteractionResponseDTO persistInteraction( @RequestBody String interactionJSON , HttpServletRequest request ) throws JSONException , IOException , IllegalAccessException , InvocationTargetException , UnprocessableEntityException
{
return interaction.persistInteractionService( interactionJSON , request );
}
Рассмотрим внутри persistInteractionService Я перебираю список из 10 сообщений. Но 5-е сообщение вызвало какое-то исключение, управление переходит к глобальному обработчику исключений. Я не могу запустить остальные сообщения (т. Е. От 6 до 10).