Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Обработка исключительных ситуаций (в чем ошибка?)

58K
22 июня 2010 года
friZur
9 / / 31.05.2010
Всем доброго времени суток...
Пишу вот программу для проверки правильности ввода пути к файлу
то есть на наличие : / . Использую Dev-C++
Вроде как получилось, если ввод не правильный то ошибку пишет, но есть сомнения что что-то все таки напортачил...
Подскажите пожалуйста, правильно ли все тут? Задание было решить эту проблему с помощью блока try-catch. Только я не совсем понял использование блока catch(

Код:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
  {
  FILE *fp;
  char flag;
  char put[20];
if((fp=fopen("MYFILE.txt","w"))==NULL)
{
puts("Cant open the file");
system("pause");
exit(0);
}
flag='y';
while(flag!='N' && flag!='n')
{
  try
  {
    puts("Enter path to the file");
    gets(put);
    if ((((put[strlen(put)-4]!='.') && (put[strlen(put)-5]!='.')) || (put[1]!=':') || (put[2]!='\\')))
     throw "Wrong Path to the file";
  }
  catch (const char *s)
  {
    std::cout << s << std::endl;
  continue;
}
fputs(put,fp);
fputs("\n",fp);
puts("Continue?");
flag=getchar();
getchar();
putchar('\n');
}
fclose(fp);
system("pause");
return EXIT_SUCCESS;
  }
297
22 июня 2010 года
koodeer
1.2K / / 02.05.2009
Эмм, явных ошибок не вижу. Разве что давным-давно пора отказаться от использования функции gets.

А по поводу исключений, - если вынести код проверки правильности введённой строки в отдельную функцию, и там бросать исключение, а перехватывать его в месте вызова этой функции, то это будет более правильно. Потому что в нынешнем виде это как бы не имеет смысла, имхо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог