Каждое SQL-исключение имеет цепочку объектов SQLException, которые извлекаются посредством метода getNextException. Эта цепочка исключений является дополнением цепочки «cause» объектов Throwable, имеющихся в каждом исключении. Чтобы полностью перечислить все исключения, может потребоваться два вложенных цикла.К счастью, в Java SE 6 был усовершенствован класс SQLException для реализации интерфейса Iterable<Throwable>.
Метод iterator() дает Iterator<Throwable>, который осуществляет перебор в обеих цепочках, сначала проходя по цепочке «cause» первого SQLException, а затем переходя к следующему SQLException и т.д. Вы можете просто использовать улучшенный цикл for:
1 2 3 4 |
for(Throwable t : SQLException) { любый действия с t } |
Чтобы продолжить дальнейший анализ SQLException, можно вызвать методы getSQLState и getErrorCode в SQLException. Первый метод дает строку, стандартизированную в соответствии с X/Open или SQL:2003. Кстати, вызовите метод DatabaseMetadata getSQLStateType, чтобы узнать, какой стандарт используется вашим драйвером. Что-же касается кода ошибки, то у разных поставщиков он разный.
В версии Java SE 6 исключения SQL организованы в виде дерева наследования. Благодаря дереве, вы сможете перехватывать определенные типы ошибок, независимо от предпочтений поставщиков.
Кроме того, драйвер базы данных может сообщать о некритичных ситуациях в форме предупреждений. Вы можете получать предупреждение от соединений, команд и результирующих наборов. Класс SQLWarning является подклассом SQLException даже если SQLWarning не генерируется в виде исключения.
Посредством вызова методов getSQLState и getErrorCode можно получить дальнейшую информацию о предупреждениях. Подобно исключениям SQL, предупреждения ставятся в цепочку.
Чтобы получить все сообщения, потребуется следующий цикл:
1 2 3 4 5 6 |
SQLWarning w = stat.getWarning(); while(w != null) { любые действия с w w = w.nextWarning(); } |
Подкласс DataTruncation класса SQLWarning используется в тех случаях, когда данные считываются из базы в этот момент происходит неожиданное их усечение.
Если усечение данных произошло в команде обновления, то DataTruncation генерируется в форме исключения.
Ни одна свадьба не обходится без участия тамады или ведущего, задача которых создать правильную атмосферу и поддерживать настроение праздничного торжества. Вы можете заказать тамада Киев недорого прямо сейчас. Веселые свадьбы по любому сценарию.