Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

Обработка исключительной ситуации   Найти похожие ветки 

 
Alex Shulg   (2002-11-28 16:24) [0]

Добрый день, друзья. Прошу о помощи.
Моя программа вызывает один процесс, который иногда вызывает исключительные ситуации, а я стараюсь их обработать:

try
...
except
...
on E:EInvalidMatch do
begin
...
end;
on E:EInvalidPointer do
begin
...
end;
else
begin
...
end;
end; //try

Проблема в том, что в блоках on...begin..end я могу получить сообщение об ошибке (E.Message), но мне хотелось бы, чтобы и в блоке else я тоже мог получить данное сообщение. Я не знаю, почему происходит исключительная ситуация, все возможные исключения, вроде бы обрабатываю, но видать не все. Как узнать, что за ошибка? (В процессе отладки это невозможно). Зарание благодарю.


 
exit   (2002-11-28 16:41) [1]

А может так:

try
...
except on E: Exception do
begin
if MessageBox(Application.Handle, PChar(E.Message), PChar(String(E.ClassName)),
MB_YESNO+MB_SYSTEMMODAL+MB_DEFBUTTON2) = mrYes then
begin
...
end else
begin
...
end;
if E.ClassType = EAccessViolation then ...
if E.ClassType = EDBEngineError then ...
end;
end;


 
oomneeq   (2002-11-28 16:51) [2]

вместо else пиши
on E:Exception do
begin
...
end;
этот блок будет ловить все остальные, не пойманые вышестоящими

важно, чтоб этот блок стоял самым последним.


 
pasha_golub   (2002-11-28 17:44) [3]

on E: EAbort
...

Тоже ловит все подряд...


 
Dimka Maslov   (2002-11-28 19:42) [4]

else begin
if ExceptObject is Exception then S := (ExceptObject as Exception).Message
end;


 
TankMan   (2002-11-28 21:13) [5]

Удалено модератором


 
TTCustomDelphiMaster   (2002-11-28 21:49) [6]

Удалено модератором


 
Кокандокало   (2002-11-29 13:05) [7]

Да блин... ну нифига не работает... Может это потому , что в Дельфи это запускаю??

try
// Тут вызов сокета
except
on E: Exception do begin MessageDlg("Socket Error", mtError, [mbOk], 0) end;
else ShowMessage("Socket Error");


Дельфи вылетает с ошибкой и все тут.. показывает свою гребанную зеленую стрелочку посередине между try и except и все =((((
И никаких MessageDlg =((((

Кстати, что надо написать в uses чтобы ловить ESocketError ?


 
Кокандокало   (2002-11-29 17:18) [8]

Ну ?
Никто не знает?


 
FreeLancer   (2002-11-29 17:28) [9]

Тебе же уже все сказали.
А стрелочка то - голубая.


 
oomneeq   (2002-11-29 18:20) [10]

on E: Exception do begin MessageDlg("Socket Error", mtError, [mbOk], 0) end;
else ShowMessage ...

Не будет никогда никакого else!
on E: Exception - всех переловит!


 
TankMan   (2002-11-29 21:02) [11]

>>TTCustomDelphiMaster
Усе спасибо... разобрался и понял :)


 
Victor_Cr   (2002-11-29 23:46) [12]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2002.12.09;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.007 c
4-28333
serd_hhc
2002-10-26 05:36
2002.12.09
Как сделать следущее....


4-28367
AndreyS
2002-10-29 10:37
2002.12.09
Разбудить диски из проги перед записью?


3-27869
hawk1974
2002-11-21 10:58
2002.12.09
BDE и Oracle 8.1.6.


7-28306
drou
2002-10-06 00:49
2002.12.09
как сделать програму невидемой


1-28056
vaneks
2002-11-27 21:30
2002.12.09
Файлы... Они есть?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский