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

Ваш аккаунт

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

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

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

try-catch

390
13 ноября 2005 года
lexus
143 / / 13.04.2004
У меня не перехватывается исключение:
try {
pow(second,first);
}catch(...){
EvalError=true;
}
Выскакивает ошибка, а по идее блок try-catch должен был ее обработать.Подскажите, пожалуйста, выход из ситуации (надо обработать операцию типа -5^0.5)
4.8K
13 ноября 2005 года
Jump
128 / / 09.11.2005
Цитата:
Originally posted by lexus
У меня не перехватывается исключение:
try {
pow(second,first);
}catch(...){
EvalError=true;
}
Выскакивает ошибка, а по идее блок try-catch должен был ее обработать.Подскажите, пожалуйста, выход из ситуации (надо обработать операцию типа -5^0.5)



Чтобы просто "поймать" эту ошибку нужно после операции проверять значение переменной errno. После данной ошибки она будет иметь значение 33. Если все ОК она равна 0.

Т.е. я так понимаю нужно

 
Код:
pow(second,first);
if(!errno)EvalError=true;
390
16 ноября 2005 года
lexus
143 / / 13.04.2004
Цитата:
Originally posted by Jump
Чтобы просто "поймать" эту ошибку нужно после операции проверять значение переменной errno. После данной ошибки она будет иметь значение 33. Если все ОК она равна 0.

Т.е. я так понимаю нужно
 
Код:
pow(second,first);
if(!errno)EvalError=true;


Call to undefined function __errno
К тому же это вряд ли избавит от надоедливого сообщения об ошибке

246
16 ноября 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by lexus
Call to undefined function __errno


#include <errno.h> ???

4.8K
16 ноября 2005 года
Jump
128 / / 09.11.2005
Цитата:
Originally posted by lexus
Call to undefined function __errno
К тому же это вряд ли избавит от надоедливого сообщения об ошибке


Сообщения убираются директивами компиллятору, тока сходу не помню какими.

246
17 ноября 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Jump
Сообщения убираются директивами компиллятору, тока сходу не помню какими.


Предупреждения - да, но ошибки только исправляются.

390
19 ноября 2005 года
lexus
143 / / 13.04.2004
Цитата:
Originally posted by Jump
Чтобы просто "поймать" эту ошибку нужно после операции проверять значение переменной errno. После данной ошибки она будет иметь значение 33. Если все ОК она равна 0.

Т.е. я так понимаю нужно
 
Код:
pow(second,first);
if(!errno)EvalError=true;



Я подключил файл, но программа вылетает с той же ошибкой. Try / catch не перехватывает ошибки

390
19 ноября 2005 года
lexus
143 / / 13.04.2004
Я никак не могу разобраться с try/catch блоками
В WinMain Builder формирует такой код:
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TFSettings), &FSettings);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
У себя в функции я пишу что-то такое:
FSettings->ShowModal();
try{
beginX=StrToFloat(FSettings->BeginX->Text);
}catch(Exception &exception){
throw Exception("");
}
Если в BeginX->Text находится текст, программа вылетает, но не в моей функции, а в WinMain генерируется исключение.Подскажите, как его перехватить
14K
19 ноября 2005 года
0007
3 / / 18.10.2005
Попробуй отключить встроенную отладку

Меню Tools->Debugger Options
и снять гальку с Integrated Debugging
390
23 ноября 2005 года
lexus
143 / / 13.04.2004
Цитата:
Originally posted by 0007
Попробуй отключить встроенную отладку

Меню Tools->Debugger Options
и снять гальку с Integrated Debugging


Жестоко.Теперь я не могу отлаживать программу в принципе, а ошибка все равно выскакивает

2.2K
24 ноября 2005 года
123tk
57 / / 28.06.2003
Цитата:
Originally posted by lexus
Жестоко.Теперь я не могу отлаживать программу в принципе, а ошибка все равно выскакивает

Скорей всего нужно снять гальку с Stop on Delphi Exceptions на странице Language Exceptions окна Debugger Options, и немношко выправить код

 
Код:
FSettings->ShowModal();
try
{
  beginX=StrToFloat(FSettings->BeginX->Text);
}
catch(Exception &exception)
{
  ShowMessage(exception.Message);
  throw Exception("");
}
обработкой прерывания могла бы быть
 
Код:
FSettings->ShowModal();
try
{
  beginX=StrToFloat(FSettings->BeginX->Text);
}
catch(Exception &exception)
{
  ShowMessage("Что-то не то");
  beginX = 0.0;
}
а в консктрукции
 
Код:
try
{
 ...
}
catch(Exception &exception)
{
  throw Exception("");
}
смысла нет.
362
24 ноября 2005 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by lexus
У себя в функции я пишу что-то такое:
FSettings->ShowModal();
try{

}catch(Exception &exception){
throw Exception("");
}
Если в BeginX->Text находится текст, программа вылетает, но не в моей функции, а в WinMain генерируется исключение.Подскажите, как его перехватить



А ты попробуй его перехватить своим же способом :D

Код:
try
{
...
}
catch(Exception &exception)
{
  try
  {
    throw Exception("");
  }
  catch(Exception &exception)
  {
    try
    {
      throw Exception("");
    }
    catch(Exception &exception)
    {
     ... ну и так далее
     как думаешь сколько можно продолжать такую конструкцию ?!!
    }
  }
}


Ты ж его перехватываешь и тут же после перехвата заново генеришь
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог