• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Обработка исключений

  • Автор темы Roklan
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Roklan

Всем привет.
Вот у меня такой вопрос, я раньше особо не использовал исключения, потому как не мог разобраться в сути!

Код:
 int a, b ,c;
a = StrToInt(Edit1->Text);
b = StrToInt(Edit2->Text);
struct ZeroDivide {};
if (b == 0) throw ZeroDivide();
try {
c = a / b;
}
catch(ZeroDivide) {
Application->Terminate();
}
Edit3->Text = IntToStr©;

Это обработчик кнопки. Как мне кажется, в случае ввода b = 0, здесь должно сгенерироваться исключение деления на ноль, типа пустой структуры ZeroDivide(я читал что так делают, то есть по сути тип искл. не важен). Только здесь всеравно происходит обрушение программы(((
Объясните кто-нибудь плиз. что не так??
 
R

Roklan

Morpheus
Да, exe работает, только я не нашел такого пункта Stop on Delphi Exceptions
в данном подменю.

И в exe выводится окно с "External exeption EEFFACE", если у меня есть оператор throw ZeroDivide();, а если я его закоментирую, то выводится "Division by Zero".
А если вообще поставить ... в catch, то заработает мой обработчик. Что же получается, мой обработчик обрабатывает не деление на ноль??
 
G

gamecreator

оператор throw должен быть внутри try
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!