Допустим, у меня есть это:
String sql = "DELETE FROM "+ TABLE_NAME +" WHERE id=?";
try {
int ra = jdbcTemplate.update(connection -> {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setLong(1, id);
stmt.executeUpdate();
return stmt;
});
if (ra == 0)
throw new SQLException(SQL_ERROR);
} catch (SQLException e){
LOGGER.error(SQL_ERROR);
throw new DataAccessLayerException("Entity could not be deleted due to SQL Exception");
}
Я удаляю сущность из таблицы с ключом (id). Теперь я хочу иметь возможность сообщать INTERNAL_SERVER_ERROR
клиенту, не вызывая RuntimeException
.
Однако я не могу воспроизвести SQLException
. Например, если я удаляю букву в своем операторе sql, я получаю только синтаксическую ошибку, которая выдается как ошибка времени выполнения, и кажется, что я ее не перехватываю.
Помогите мне понять, что именно здесь подразумевается под SQLException, и как мне воспроизвести его и сообщить об этом клиенту, не вызывая RuntimeException?