Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2008, 00:09   #1
Bravo
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 19
По умолчанию Деление на 0. Как обработать ошибку?

Подскажете, как можно обработать данное исключение?
Мне надо, если b станет = 0, в Edit записалась бы буква N.

float a =(c)/(b);
Edit->Text=a;
Bravo вне форума Ответить с цитированием
Старый 22.10.2008, 00:24   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А что, в Си нету try...except ?
mihali4 вне форума Ответить с цитированием
Старый 22.10.2008, 00:57   #3
Bravo
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 19
По умолчанию

Есть! Но мне непонятно как им пользоваться!
Bravo вне форума Ответить с цитированием
Старый 22.10.2008, 01:04   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Перевожу с "олбанского": TRY - попытаемся, EXCEPT - при возникновении исключения.
(Есть еще TRY...FINALLY. Про все это с примерами есть во встроенном хэлпе)
Таким образом, логически рассуждая, делаем:
Код:
try
float a =(c)/(b);
except
Edit->Text='N';
end;
В общем случае, при except можно еще и уточнить причину и обработать каждую по-своему.

Последний раз редактировалось mihali4; 22.10.2008 в 01:07.
mihali4 вне форума Ответить с цитированием
Старый 22.10.2008, 01:33   #5
Bravo
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 19
По умолчанию

Ща экспериментирую с try...catch.
А так спасибо mihali4, натолкнул на мысль!

Последний раз редактировалось Bravo; 22.10.2008 в 02:13.
Bravo вне форума Ответить с цитированием
Старый 22.10.2008, 02:05   #6
Bravo
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 19
По умолчанию

Короч я разобрался.
В место except подставил catch(EDivByZero& e) и уаля!

Последний раз редактировалось Bravo; 22.10.2008 в 02:15.
Bravo вне форума Ответить с цитированием
Старый 22.10.2008, 02:15   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

При выполнении из среды ошибка всегда будет выскакивать, если включен режим отладки и режим останова по этой ошибке. А при запуске экзешника не из среды обработка ошибок происходит "по-тихому"...
mihali4 вне форума Ответить с цитированием
Старый 22.10.2008, 02:30   #8
Bravo
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 19
По умолчанию

Мож кому пригодится.

Код:
{
int a=0,b=1,c;
try     {
       c=b/a;

       }
catch(EDivByZero& e)
       {

       Edit1->Text='n';
       }

}
Bravo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обработать ошибку XAOC-forever Работа с сетью в Delphi 11 24.09.2008 20:13
Как обработать следующую ситуацию? Tanuska___:) БД в Delphi 5 09.09.2008 12:47
Как обработать исключение? XPAiN БД в Delphi 9 16.05.2008 15:09
Как в Си обработать нажатие управлавляющих клавиш ? feranic Общие вопросы C/C++ 5 14.04.2008 19:20
delphi - как обработать ошибку перехода на пустой cd-rom? yourself Помощь студентам 2 10.03.2008 23:01