Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
6-28192
Dr.Shark
2002-10-02 13:28
2002.12.09
Как установить соединение по локальной сети?


1-28040
Cranium
2002-11-30 10:33
2002.12.09
Последовательный запуск программ


1-28008
Александр
2002-11-24 15:47
2002.12.09
Отслеживание кликов по пунктам ТCheckListBox?


3-27886
User_OKA
2002-11-21 15:00
2002.12.09
SQL-запрос в потоке TThread


1-27962
Mosh
2002-11-28 23:50
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский