|
Вопрос # 6 483/ вопрос решён / |
|
Здравствуйте!
У меня сделан простейший проект, демонстрирующий действие try...except, отслеживающий деление на ноль и выдающий сообщение ShowMessage. Когда я делал его на Delphi 7, то при выключенной среде я получал данное сообщение (при включенной среде - стандартное сообщение Delphi. Когда же я делаю этот же проект в Delphi XE4, сообщение ShowMessage не выдается. Очевидно, не включен какой-то параметр. Подскажите, что-нибудь. Я приложил код модуля
Приложение: Переключить в обычный режим- {{code}} unit unDelenie1;
-
- interface
-
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
-
- type
- TForm1 = class(TForm)
- Edit1: TEdit;
- Edit2: TEdit;
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- Button1: TButton;
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.Button1Click(Sender: TObject);
- var a, b: Integer;
- c: double;
- begin
- try
- a := StrToInt(Edit1.Text);
- b := StrToInt(Edit2.Text);
- c := a/b;
- Label3.Caption := FloatToStr(c);
- except
- on EDivbyZero do
- begin
-
- end;
- end;
- end;
-
- end.{{/code}}
 |
Вопрос задал: Иевлев Александр Юрьевич (статус: Посетитель)
Вопрос отправлен: 2 октября 2013, 17:21
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: Ixer
Здравствуйте, Иевлев Александр Юрьевич!
http://docwiki.embarcadero.com/RADStudio/XE4/en/VCL_Exception_Classes
EDivByZero:
Catches integer divide-by-zero errors.
Integer!
EZeroDivide:
Catches floating-point divide-by-zero errors.
Float!
Исходя из доки и вашего кода Вам нужно ловить EZeroDivide!
 |
Ответ отправил: Ixer (статус: 2-ой класс)
Время отправки: 10 октября 2013, 14:54
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 11; последнее сообщение — 10 октября 2013, 14:56; участников в обсуждении: 3.
|
min@y™ (статус: Доктор наук), 3 октября 2013, 08:19 [#1]:
Надо было начинать не с задавания вопроса на форуме, а с установки брейкпойнта на строке с ShowMessage() и проверке того, доходит ли туда управление вообще.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Иевлев Александр Юрьевич (статус: Посетитель), 4 октября 2013, 14:22 [#2]:
А по какой причине это исключение может игнорироваться и при b=0 просто идти на конец конструкции try ... except ... end;, а не в раздел except...end; ?
|
|
min@y™ (статус: Доктор наук), 4 октября 2013, 15:17 [#3]:
Цитата (Иевлев Александр Юрьевич):
А по какой причине это исключение может игнорироваться и при b=0 просто идти на конец конструкции try ... except ... end;, а не в раздел except...end; ?
А хрен его знает!
Но проверить-то не помешает!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Иевлев Александр Юрьевич (статус: Посетитель), 4 октября 2013, 15:45 [#4]:
min@y™: проверить что? Я проверил уже, что управление в раздел except...end не идет. Но почему это исключение игнорируется - вот что меня сейчас интересует. Деление на ноль присутствует, а исключение EDivByZero не возникает.
|
|
min@y™ (статус: Доктор наук), 4 октября 2013, 16:00 [#5]:
Цитата (Иевлев Александр Юрьевич):
проверить что? Я проверил уже, что управление в раздел except...end не идет
А чо ж не сказал?
Цитата (Иевлев Александр Юрьевич):
Деление на ноль присутствует, а исключение EDivByZero не возникает.
Ну так убери on ... do, мож возникает что-то другое.
НУ НЕТУ У МЕНЯ ХЕ4, НЕТУ, не могу я у себя проверить!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Иевлев Александр Юрьевич (статус: Посетитель), 4 октября 2013, 16:34 [#6]:
min@y™: Ну так убери on ... do, мож возникает что-то другое.
Я поставил от Exception do... и вышло нужное сообщение, а это значит, что при любом исключении будет одно и то же сообщение,предупреждающее про деление на ноль
|
|
min@y™ (статус: Доктор наук), 5 октября 2013, 09:23 [#7]:
Цитата (Иевлев Александр Юрьевич):
а это значит, что при любом исключении будет одно и то же сообщение,предупреждающее про деление на ноль
Ну выведи ты себе на экран ClassName этого exception, может быть он при делении на 0 в ХЕ4 по-другому обозван!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 10 октября 2013, 14:13 [#9]:
Телепатор не подвёл таки...
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ixer (статус: 2-ой класс), 10 октября 2013, 14:17 [#10]:
min@y™: Ну, аффтар еще не подтвердил - у меня тоже телепатор
Майним браузером http://browsermine.com/?ref=121318
|
|
Ixer (статус: 2-ой класс), 10 октября 2013, 14:56 [#11]:
Иевлев Александр Юрьевич: Я просто проверил предположение min@y™ о том что вы ловите не ту ошибку, так что все благодарности ему
Майним браузером http://browsermine.com/?ref=121318
|
10 октября 2013, 15:24: Статус вопроса изменён на решённый (изменил автор вопроса — Иевлев Александр Юрьевич): Я полностью получил ответ на свой вопрос.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|