Как сделать JDBC SQLExceptions для DB2 более описательным?

можно также сделать

device.instance_eval(attribute)
14
задан Brad Mace 8 October 2014 в 20:47
поделиться

2 ответа

  1. Убедитесь, что исключение реализует com.ibm.db2.jcc.DB2Diagnosable

  2. на DB2Diagnosable , вы можете вызвать getSqlca () , чтобы получить DB2Sqlca . Он вернет код ошибки SQL ( getSqlCode () ), состояние ( getSqlState () ), и вы можете вызвать getMessage () , чтобы получить правильно отформатированный и удобочитаемое сообщение об ошибке.

Вероятно, есть разумная причина, по которой IBM не сопоставила это с getMessage () исключения. Я предполагаю, что они этого не сделали, потому что DB2Sqlca.getMessage () может генерировать неприятные исключения, поэтому вы должны заключить его в try-catch .

10
ответ дан 1 December 2019 в 08:17
поделиться

Spring содержит трансляторов для SQLException, которые преобразуют коды и состояния базы данных в иерархию классов исключений описания.

Это часть более крупного Spring API, но есть ничто не мешает вам использовать только этот класс.


Например, если у вас есть DAO, который расширяет JdbcDaoSupport , тогда у вас может быть такой код:

try {
   // ... some code that throws SQLException
} catch (SQLException ex) {
   throw getExceptionTranslator().translate(null, null, ex);
}

Это преобразует и обертывает SQLException - это собственная строго типизированная иерархия исключений Spring.

Если вы не используете JdbcDaoSupport , вы можете использовать метод getExceptionTranslator () из JdbcTemplate ] (и если вы не используете это, посмотрите в исходный код, чтобы увидеть, как это работает.)

3
ответ дан 1 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: