можно также сделать
device.instance_eval(attribute)
Убедитесь, что исключение реализует com.ibm.db2.jcc.DB2Diagnosable
на DB2Diagnosable
, вы можете вызвать getSqlca ()
, чтобы получить DB2Sqlca
. Он вернет код ошибки SQL ( getSqlCode ()
), состояние ( getSqlState ()
), и вы можете вызвать getMessage ()
, чтобы получить правильно отформатированный и удобочитаемое сообщение об ошибке.
Вероятно, есть разумная причина, по которой IBM не сопоставила это с getMessage ()
исключения. Я предполагаю, что они этого не сделали, потому что DB2Sqlca.getMessage ()
может генерировать неприятные исключения, поэтому вы должны заключить его в try-catch
.
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
] (и если вы не используете это, посмотрите в исходный код, чтобы увидеть, как это работает.)