Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [c++] Обработка исключения


Автор: SAVEL 16.10.2007, 17:24
Здравствуйте! 

Подскажите как программно предусмотреть обработку исключения при отсутсвии файла? 

Автор: FREEDEV 16.10.2007, 19:51
   Так можно проверить что вернет функция, если NULL - тогда ошибка открытия

Код

// Open for read (will fail if file "crt_fopen.c" does not exist)
   if( (stream  = fopen( "crt_fopen.c", "r" )) == NULL ) // C4996
   // Note: fopen is deprecated; consider using fopen_s instead
      printf( "The file 'crt_fopen.c' was not opened\n" );
   else
      printf( "The file 'crt_fopen.c' was opened\n" );


Автор: 0lmer 17.10.2007, 12:18
Код

#include <System.hpp> //или SysUtils.hpp, точно не помню.
if (!FileExists("FILENAME")) { 
  //ERROR!!!
}

Автор: Damarus 17.10.2007, 15:26
FREEDEV0lmer, и где тут исключения?

Цитата(SAVEL @  16.10.2007,  18:24 Найти цитируемый пост)
Подскажите как программно предусмотреть обработку исключения при отсутсвии файла?  

http://www.cplusplus.com/reference/iostream/ios/exceptions.html
Код

// ios::exceptions
#include <iostream>
#include <fstream>
using namespace std;

int main () {
  ifstream file;
  file.exceptions ( ifstream::eofbit | ifstream::failbit | ifstream::badbit );
  try {
    file.open ("test.txt");
    while (!file.eof()) file.get();
  }
  catch (ifstream::failure e) {
    cout << "Exception opening/reading file";
  }

  file.close();

  return 0;
}

Автор: 0lmer 19.10.2007, 16:27
Цитата(Damarus @  17.10.2007,  15:26 Найти цитируемый пост)
0lmer, и где тут исключения?

При желании его можно сгенерировать. Я предложил на мой взгляд самый простой вариант.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)