![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработка исключительных ;ситуаций [D5, Win95/98]
Abajun © (2002-01-28 13:39:00)Привет всем! В программе иногда возникает такая ситуация: вызывается функция из DLL и в ней программа прекращает работу, т.е. вылетает безо всяких ошибок. А мне нужно, чтобы если она вылетает и функция до конца не отработает, то все равно дальше продолжать работу программы. Не подскажите, как правильнее всего это сделать?
Abajun (2002-01-28 15:19:00) [21]Исходники есть, но на Fortran (присоединяется через LoadLibrary).
Можно считать, что DLL закрыта.
Digitman (2002-01-28 15:04:00) [22]DLL "чужая" (без исх.текстов) или твоей разработки ?
Abajun (2002-01-28 14:48:00) [23]А я не знаю - она просто вылетает и все. Кроме того, она вызывается и начинает считать, но в процессе выполнения что-то там не срабатывает (какие-то математические ошибки) и все.
Digitman (2002-01-28 14:33:00) [24]какое исключение возникает при выполнении вызова DLL-ф-ции ?
MBo (2002-01-28 14:31:00) [25]
ошибся
try
Flag:=True;
Lvpp:= SomeFunction(a1,...);
flag:=False;
finally
if Flag then
Lvpp:= 100000;
end;
Abajun (2002-01-28 14:29:00) [26]В строчке
Lvpp:= SomeFunction(a1,...)
программа заканчивает работу и ни на какой
flag:=False;
не пойдет.
MBo (2002-01-28 14:18:00) [27]если не разбираться в причинах, то можно по-тупому
try
Flag:=True;
Lvpp:= SomeFunction(a1,...);
flag:=False;
except
if Flag then
Lvpp:= 100000;
end;
Abajun (2002-01-28 14:04:00) [28]Мне finally не подходит, т.к. этот блок выполняется обязательно, независимо от того, произошла ли ошибка или нет. А мне нужно в переменную Lvpp передать значение SomeFunction, а если в той какая-либо ошибка (не считает, например) - то присвоить значение 100000. Если функция вылетает - для меня это тоже результат.
Андрей Сенченко (2002-01-28 14:00:00) [29]Попробуй все-таки Finally. Лично я except-ом стараюсь не пользоваться. То ли он не понимает, что произошла исключительная ситуация, то ли я чего не то пишу, но если написано в Finally- работает, а если в Except - никак.
Abajun (2002-01-28 13:55:00) [30]Так это все и написано:
try
Lvpp:= SomeFunction(a1,...);
except
Lvpp:= 100000;
end;
Иногда SomeFunction вылетает и программа дальше не идет, а хотелось, чтобы работал блок except. Как я понимаю, такой общий вид работает на все виды исключительных ситуаций. Так получается, что мой случай - это не такая ситуация?
Андрей Сенченко (2002-01-28 13:43:00) [31]try .. except
или
try .. finally
Судя по вопросу, скорее второе