Главная » Java » Классы lOException в Java

0

 

   Каждая ошибочная ситуация, связанная с выполнением операций ввода-вывода средствами классов пакета Java, io, фиксируется выбрасыванием исключений класса lOException либо типов, производных от него. Большинство стандартных классов ввода-вывода отличается достаточно общим характером, поэтому в объявлениях методов классов частные типы исключений не перечисляются. Например, методы класса InputStream, выбрасывающие исключения lOException, не работают с производными типами исключений, которые могли быть сгенерированы в той или иной конкретной ситуации, — такие возможности при необходимости реализуются в расширенных классах InputStream. A фильтрованные потоки получают исключения только от "внутренних" объектов потоков самых различных типов.

   Ниже перечислены типы исключений, производные от lOException, объекты которых могут генерироваться методами классов, объявленных в пакете Java.io.

 

CharConversionException extends lOException

Выбрасывается при возникновении проблемы, связанной с преобразованием символов в ходе выполнения операций символьными потоками, которые должны осуществлять трансформацию символов локальных кодовых таблиц в Unicode или наоборот.

EOFException extends lOException

Выбрасывается в том случае, если при выполнении операции ввода (чтения) данных из файла (потока) обнаруживается признак конца файла (потока).

FileNotFoundException extends  lOException

Выбрасывается, когда попытка обращения к файлу, заданному посредством имени, оказывается неуспешной — преимущественно, ввиду отсутствия файла.

interruptedlOException extends  lOException

Выбрасывается, когда операция ввода-вывода, вызывающая блокировку, определяет, что работа текущего потока вычислений была прервана до начала или в процессе выполнения операции. Вообще говоря, прерывание потока вычислений должно приводить к выбрасыванию такого исключения (кроме случаев использования методов потоков Print), когда поток вычислений выполняет операцию ввода-вывода, вызывающую блокировку-Однако на практике в большинстве реализаций предусматривается, что проверка наличия уведомления о прерывании осуществляется только Д° начала операции, а в процессе выполнения операции реакция на событие прерывания не обеспечивается (см. раздел 15.4.1), поэтому рассчитывать на возможность прерывания работы блокированного потока вычислений, как правило, нельзя. Этот тип исключения используете также в качестве инструмента уведомления о том, что в ходе выполнени операции ввода-вывода в сетевой среде период времени ожидания (timeou ) исчерпан.

 

jnidel assException extends objectStreamException

Выбрасывается, когда механизм сериализации обнаруживает проблему, связанную с изъянами в структуре класса: версия класса не соответствует версии объекта данных, подлежащего десериализации, класс содержит неизвестные типы данных либо в составе класса отсутствует необходимый конструктор без параметров, открытый для доступа.

invalidObjectException extends ObjectStreamException

Выбрасывается, когда метод validateObject не в состоянии подтвердить достоверность объекта, что приводит к аварийному завершению процесса десериализации.

NotActiveException extends ObjectStreamException

Вызывается при обращении к методу десериализации, такому как defaul tReadObject, когда поток данных, подлежащих вводу, не активен.

NotSerializableException extends ObjectStreamException

Выбрасывается косвенным образом в процессе сериализации/десериализации либо непосредственно методами класса, если объекты этого класса не поддерживают механизм сериализации.

ObjectStreamException extends  lOException

Класс, базовый по отношению ко всем типам исключений, связанным с потоками Object.

OptionalDataException extends ObjectStreamException

Выбрасывается, когда необязательные данные (т.е. не попадающие в сферу действия механизма сериализации, предусмотренного по умолчанию) в потоке ввода Object нарушены либо не считаны методом ввода.

StreamCorruptedException extends ObjectStreamException

Выбрасывается, когда внутренняя контрольная информация потока Object утрачена или нарушена.

SyncFailedException extends  lOException

Выбрасывается методом Fi leDescri ptor. sync, если тот не способен гарантировать, что данные действительно сохранены на носителе.

UnsupportedEncodingException extends lOException

Выбрасывается, когда методам потока чтения или записи передается аргумент, указывающий на неизвестную кодировку символов.

UTFDataFormatException extends  lOException

Выбрасывается методом DatalnputStream. readUTF, если вводимая строка не отвечает правилам синтаксиса формата UTF.

WriteAbortedException extends ObjectStreamException

Выбрасывается при возникновении ошибки операции записи в процессе сериализации.

  Помимо частных типов исключений, для фиксации ошибок ввода-вывода при выполнении методов классов из состава пакета Java.io применяются объекты типа lOException, содержащие строку с описанием конкретной ошибочной ситуации. Например, при попытке использования объекта потока Piped, который не связан с объектом обратного действия на другом конце канала, выбрасывается объект исключения, содержащий строку "Pipe not connected" {канал не связан), а в случае возврата в обратный буфер потока PushbackReader недопустимо большого числа символов будет сгенерирован объект исключения с поясни тельной строкой "Pushback  buffer  overflow" (переполнение обратного буфера). Подобные исключения с трудом поддаются принудительному отлову, и по этому такой стиль работы с исключениями не находит широкого распростране ния —   гораздо   более   целесообразным   следует   считать   создание   отдельных производных  классов исключений,  отвечающих  конкретным  категориям ошибочных ситуаций.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии