當我嘗試捕獲DataIntegrityViolationException
並將其轉換爲我的自定義異常時,catch塊不會執行。Spring TransactionTemplate不處理異常
正如我使用的代碼從一個這樣的示例: guide
結果,ServicePointRepository
拋出DataIntegrityViolationException
是在我的控制器層處理,並且在運行時代碼似乎是避免catch塊。
我在做什麼錯?
這是PersistenceService代碼:
@Autowired
private ServicePointRepository servicePointRepository;
@Autowired
private BusinessExceptionFactory businessExceptionFactory;
@Autowired
private TransactionTemplate transactionTemplate;
@Override
public String save(final ServicePointDTO servicePointDTO) {
final ServicePointEntity servicePointEntity = mapToEntity(servicePointDTO);
return transactionTemplate.execute(status -> {
try {
return servicePointRepository.save(servicePointEntity).getId().toString();
} catch (DataIntegrityViolationException e) {
throw businessExceptionFactory.createBusinessException(AlreadyExistException.class, CommonError.ALREADY_EXIST);
}
});
}