Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
bubus
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 12
1

Вылетает программа после обработки исключения

01.10.2015, 19:03. Просмотров 436. Ответов 4
Метки нет (Все метки)

Процедура читает типизированный файл и выводит содержимое на экран. По заданию нужно обработать исключения. Я обработал открытие файла try except end; и исключения на чтение содержимого файла. Ошибку при не тех даных в файле он отлавливает и программа дальше работает нормально, а вот если файла не существует то программа почему-то вылетает, так вот почему она вылетает ума не прикладу.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
procedure printAr(st:string[10]);
  type
    dat=
      record
        massiv:mas;
        min:integer;
      end;
  var 
    f:file of dat;
    p:dat;
  begin
    try
    clrscr;
    assign(f, st);
    reset(f);
    except
      on System.IO.FileNotFoundException do
        begin
          //close(f);
          writeln('Файл не найден!');
          writeln('Сгенерируйте массив и нийдите минимальный элемент');
          sleep(2000);
          exit;
        end;
      else 
        begin
          writeln('Неизвестная ошибка!!!');
          sleep(2000);
          exit;
        end;
    end;
    try
      try
        read(f, p);
      finally
        close(f);
      end;
      writeln('Массив: ',p.massiv);
      writeln('Минимальный элемент массива: ',p.min);
    except
      on System.IO.EndOfStreamException do
        begin
          writeln('Выполните поиск минимальноо элемента масива');
        end;
      on System.StackOverflowException do
        begin
          writeln('Переполнение стека');
          exit;
        end;
      else
        begin
          writeln('Какая-то ошибка');
          sleep(1500);
          exit;
        end;
    end;
    readln;
  end;
Добавлено через 53 минуты
Решаются такие вылеты путём замены exit на error:=true а после уже if error then exit; и почему-то только так можно закрыть процедуру без вылета всей программы.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
procedure printAr(st:string[10]);
  type
    dat=
      record
        massiv:mas;
        min:integer;
      end;
  var
    error:boolean;
    f:file of dat;
    p:dat;
  begin
    error:=false;
    clrscr;
    try
      assign(f, st);
      reset(f);
    except
      on System.IO.FileNotFoundException do
        begin
          writeln('Файл не найден!');
          writeln('Сгенерируйте массив и нийдите минимальный элемент');
          sleep(2000);
          error:=true;
        end;
      else 
        begin
          writeln('Неизвестная ошибка при открытии файла!!!');
          sleep(2000);
          error:=true;
        end;
    end;
    if error then exit;
    try
      try
        read(f, p);
      finally
        close(f);
      end;
    except
      on System.IO.EndOfStreamException do
        begin
          writeln('Выполните поиск минимальноо элемента масива');
          error:=true;
          sleep(1500);
        end;
      on System.StackOverflowException do
        begin
          writeln('Переполнение стека');
          sleep(1500);
          error:=true;
        end;
      else
        begin
          writeln('Неизвестная ошибка при чтении файла');
          sleep(1500);
          error:=true;
        end;
    end;
    if error then exit;
    writeln('Массив: ',p.massiv);
    writeln('Минимальный элемент массива: ',p.min);
    readln;
  end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2015, 19:03
Ответы с готовыми решениями:

Дана матрица целых чисел размером 4x3. Отсортировать каждую строку матрицы по убыванию. Вывести содержимое матрицы до обработки и после обработки
Дана матрица целых чисел размером 4x3. Отсортировать каждую строку матрицы по...

Вылетает программа
Есть готовая программа. У меня срабатывает с 4го раза. Ещё у одного человека...

Вылетает программа с подключенным модулем crt
Здравствуйте. Я новичок в PascalABC.Net, поэтому прошу помочь, а не бросаться...

После многих итераций цикла вылетает код
Цикл, каждые 5 секунд проверяется txt из Интерента. Если он имеет определённое...

Программа обработки файла
Собственно возникла проблема, очень прошу помощи ! Мне нужно написать...

4
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26313 / 17646 / 6995
Регистрация: 22.10.2011
Сообщений: 31,061
Записей в блоге: 6
01.10.2015, 23:54 2
Цитата Сообщение от bubus Посмотреть сообщение
а вот если файла не существует то программа почему-то вылетает
Ничего не вылетает, нормально выдает сообщение "Файл не найден!", и через 2 секунды выходит из процедуры.
0
bubus
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 12
02.10.2015, 00:15  [ТС] 3
Если повторно вызвать эту процедуру или какую-нибудь другую подпрограмму то вылетает. Вот вся программа.
0
Вложения
Тип файла: rar laba11.1.rar (2.2 Кб, 1 просмотров)
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26313 / 17646 / 6995
Регистрация: 22.10.2011
Сообщений: 31,061
Записей в блоге: 6
02.10.2015, 01:19 4
И опять не вылетает. Трижды без создания файла вызывал 4-ку (т.е., вывод содержимого файла) - хоть бы что, продолжает работать, зараза, и все тут.
1
bubus
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 12
02.10.2015, 15:34  [ТС] 5
Может из-за версии компилятора. У меня сейчас 2.2.0.842 (08.02.2015). И скрин с вылетом. Это второй запуск 4-ки.
0
Миниатюры
Вылетает программа после обработки исключения  
02.10.2015, 15:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2015, 15:34

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

Программа обработки символьного массива
Помогите решить :) Задача: Сохранить текст в массиве и выполнить следующий...

программа обработки с использованием строчных величин.
Помогите решить... 1. Составить программу, которая подсчитает количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru