Аналіз помилок

В цьому прикладі ми визначили наявність помилки вводу/виводу перевіркою значення, що повертається потоковим об’єктом.

if(!is)

//виникла помилка

Тут is повертає значення вказівника, якщо все пройшло без помилок. Інакше повертається 0. Це жорсткий підхід до визначення помилок: неістотно, яка саме помилка виникла, всі помилки обробляються однаково. Тим не менше, за допомогою прапорів статусу помилки ios можна здобутидетальнішу інформацію про помилки файлового вводу/виводу.

Ми вже бачили деякі з цих файлів статусу під час роботи, коли обговорювали виведення на екран і ввід з клавіатури. У програмі 26.11 показано, як можна використати їх при файловому вводі/виводі.

//перевірка помилок відкриття файлу

#include<fstream>

#include<iostream>

#include<conio>

using namespace std;

int main()

{ ifstream file;

file.open("a:test.dat");

if(!file)

cout<<"\nNemozlyvo vidkryty file";

else

cout<<"\nFile vidkrytyj bez pomylok ";

cout<<"\nfile= "<<file;

cout<<"\nKod pomylky="<<file.rdstate();

cout<<"\ngood()="<<file.good();

cout<<"\neof()="<<file.eof();

cout<<"\nfail()="<<file.fail();

cout<<"\nbad()="<<file.bad()<<endl;

file.close();

getch();

return 0;

}

 

Програма 26.11

Спершу програма перевіряє значення файлового об’єкту. Якщо воно нульове, то файл, можливо, не існує і тому не може бути відкритим. От приклад роботи програми в такій ситуації:

 

Код помилки, який повертає rdstat(), рівний 4. Це біт, який сповіщає про те, що файл не існує. Функція good() повертає 1 (true) тільки в тому випадку, коли не встановлені ніякі біти помилок, тому в нашому прикладі вона повернула 0 (false). Вказівник файлу встановлюється не на eof, тому відповідна функція повертає 0.

 








Дата добавления: 2015-08-26; просмотров: 665;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.