try-catch
try {
pow(second,first);
}catch(...){
EvalError=true;
}
Выскакивает ошибка, а по идее блок try-catch должен был ее обработать.Подскажите, пожалуйста, выход из ситуации (надо обработать операцию типа -5^0.5)
У меня не перехватывается исключение:
try {
pow(second,first);
}catch(...){
EvalError=true;
}
Выскакивает ошибка, а по идее блок try-catch должен был ее обработать.Подскажите, пожалуйста, выход из ситуации (надо обработать операцию типа -5^0.5)
Чтобы просто "поймать" эту ошибку нужно после операции проверять значение переменной errno. После данной ошибки она будет иметь значение 33. Если все ОК она равна 0.
Т.е. я так понимаю нужно
if(!errno)EvalError=true;
Чтобы просто "поймать" эту ошибку нужно после операции проверять значение переменной errno. После данной ошибки она будет иметь значение 33. Если все ОК она равна 0.
Т.е. я так понимаю нужно
if(!errno)EvalError=true;
Call to undefined function __errno
К тому же это вряд ли избавит от надоедливого сообщения об ошибке
Call to undefined function __errno
#include <errno.h> ???
Call to undefined function __errno
К тому же это вряд ли избавит от надоедливого сообщения об ошибке
Сообщения убираются директивами компиллятору, тока сходу не помню какими.
Сообщения убираются директивами компиллятору, тока сходу не помню какими.
Предупреждения - да, но ошибки только исправляются.
Чтобы просто "поймать" эту ошибку нужно после операции проверять значение переменной errno. После данной ошибки она будет иметь значение 33. Если все ОК она равна 0.
Т.е. я так понимаю нужно
if(!errno)EvalError=true;
Я подключил файл, но программа вылетает с той же ошибкой. 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 генерируется исключение.Подскажите, как его перехватить
Меню Tools->Debugger Options
и снять гальку с Integrated Debugging
Попробуй отключить встроенную отладку
Меню Tools->Debugger Options
и снять гальку с Integrated Debugging
Жестоко.Теперь я не могу отлаживать программу в принципе, а ошибка все равно выскакивает
Жестоко.Теперь я не могу отлаживать программу в принципе, а ошибка все равно выскакивает
Скорей всего нужно снять гальку с Stop on Delphi Exceptions на странице Language Exceptions окна Debugger Options, и немношко выправить код
try
{
beginX=StrToFloat(FSettings->BeginX->Text);
}
catch(Exception &exception)
{
ShowMessage(exception.Message);
throw Exception("");
}
try
{
beginX=StrToFloat(FSettings->BeginX->Text);
}
catch(Exception &exception)
{
ShowMessage("Что-то не то");
beginX = 0.0;
}
{
...
}
catch(Exception &exception)
{
throw Exception("");
}
У себя в функции я пишу что-то такое:
FSettings->ShowModal();
try{
}catch(Exception &exception){
throw Exception("");
}
Если в BeginX->Text находится текст, программа вылетает, но не в моей функции, а в WinMain генерируется исключение.Подскажите, как его перехватить
А ты попробуй его перехватить своим же способом :D
{
...
}
catch(Exception &exception)
{
try
{
throw Exception("");
}
catch(Exception &exception)
{
try
{
throw Exception("");
}
catch(Exception &exception)
{
... ну и так далее
как думаешь сколько можно продолжать такую конструкцию ?!!
}
}
}
Ты ж его перехватываешь и тут же после перехвата заново генеришь