Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора 57стр.doc
Скачиваний:
54
Добавлен:
15.06.2014
Размер:
478.21 Кб
Скачать

Вопрос 38. Состояние ошибок ввода/вывода

Состояние потока может быть проверено с помощью битов класса ios — базового для классов istream, ostream и iostream, которые использe.ncz для ввода-вывода.

Ошибки потока:

Бит eofbit для входного потока автоматически устанавливается, когда встречается признак конца файла. Используется для определения в потоке признака конца файла. Вызов cin.eof() (возвращает true, если в cin встретился признак конца файла, и false в противном случае).

Бит failbit устанавливается для потока, если в потоке происходит ошибка форматирования, но символы не утеряны (обычно данные можно восстановить) - пользовательская ошибка.

Бит badbit устанавливается для потока при возникновении ошибки, к-ая приводит к потере данных (выполнена недопустимая опер-я).Данные обычно не восстанавливаются.

Бит goodbit устанавливается для потока, если ни один из битов eofbit, failbit и badbit не установлен (нет никаких ошибок). Возвращает true, если для данного потока все ф-ции bad, fail и eof должны вернуть false.

Функция-элемент rdstate возвращает состояние ошибки потока (читает состояние потока).

Функция-элемент clear обычно используется для восстановления потока в нормальное состояние (когда функция-элемент good возвращает истину), при котором можно продолжать операции ввода-вывода данного потока. По умолчанию параметр функции clear принимает значение ios::goodbit, так что оператор

cin.clear(); очистит входной поток cin и установит goodbit для этого потока. Оператор cin.clear(ios::failbit)устанавливает failbit.

Функция-элемент operator! возвращает истину в том случае, если установлен либо badbit, либо failbit, либо оба вместе. Функция-элемент operator void * возвращает false, если установлен либо badbit, либо failbit, либо оба вместе. Эти функции полезны при обработке файлов и проверке истин­ности или ложности условия в структуре выбора или в структуре повторения.

Hardfail – неисправимая ошибка

Функция eof() возвр int, если eofbit

Fail() возвр истину если Failbit Badbit Hardfail

Good() возвр истину если ошибок не было

Вопрос 39. Понятие исключения. Когда должна использоваться обработка исключений.

Обработка исключений позволяет отловить ошибку перед её возникновением. Обработка исключений используются в том случае, когда система может восстановиться из состояния ошибки. Т.е. обработчик исключений является процедурой восстановления. Исключения – возникновение непредвиденных ошибочных условий, например, деление на 0,... Обычно эти условия завершают выполнение программы системной ошибкой. Но возможно восстановить программу из этих условий и продолжать её выполнение.

Обработка исключений позволяет внести отслеживание потенциально возможных ошибок вне основного кода программы.

Наиболее типичные ошибки, обрабатываемые с помощью исключений:

  • неуспешное выполнение new

  • выход интерфейса за пределы массива

  • деление на 0

  • неправильные аргументы при вызове ф-ций

Обработка исключений должна использоваться для:

  • обработки только исключительных ситуаций.

  • обработки исключения, возникающие в тех компонентах программы, к-ые сами не имеют механизма обработки этих исключений.

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

  • обработки больших проектов (ошибки, возникающие в различных местах проекта, обрабатываются одинаковым способом).