Скажем, из службы весны я хочу вызвать через клиента внешнюю систему, если этот вызов завершится с ошибкой (выбрасывает исключение), я хочу его зарегистрировать, обновить статус заказа в DB и перестроить исключение для транзакции, подлежащей откату ...Захват Java/Spring Исключения/Регистрация и обновление статуса
Я знаю, что под образцом кода считается анти-шаблон, но я не могу придумать что-то лучшее для достижения этого ... любые комментарии PLS?
public class Service {
@Autowired(required = true)
private Client client;
@Autowired(required = true)
private DAO d;
@Transactional
@Override
public void register(String id) {
try{
client.invoke(id);//throws Client unchecked exception
}
catch (ClientException e){
LOG.error (e);
d.updateStatus(id,"failed");
throw e;
}
}
}
это должно быть хорошо. Но в catch вы должны написать: 'throw new ClientException (e)'. – Anubhab
Почему? обертка исключения имеет только интерес, если тип обертки отличается от исходного. Он делает это хорошим способом – Gab
да, бросьте e; просто реконструирует мое исключение ... но есть ли лучший способ добиться этого? – boom123