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

Вниз

Application.OnException   Найти похожие ветки 

 
Satrap   (2002-01-24 10:19) [0]

уважаемые мастера, скажите, можно ли в обработчике события
Application.OnException получить код ошибки, вызвавшую ту или иную исключительную ситуацию?


 
Виктор Щербаков   (2002-01-24 10:22) [1]

Код ошибки - это что?

Можно проверить исключение на принадлежность к какому-либо класу:
if E is EInOutError then ...


 
Satrap   (2002-01-24 16:24) [2]

Например, есть искл. сит-я Asincoronius Socket Error, в ее поле Message говорится о номере ошибки, можно ли в обработчике OnException получить этот номер?


 
Digitman   (2002-01-24 17:13) [3]

Можно. Вариантов куча.
1. Вариант через "причинное место" - код ошибки присутствует в строковом виде в строке текстового сообщения об исключении. Позиция фиксирована по отн. к концу строки в зависимости от WSA-операции, вызвавшей исключение
ExceptMessage := E.Message;
if E is ESocketError then
.. ErrCode:= StrToInt(Copy(ExceptMessage, ..., ...))

2. Вариант получше - не доводить обработку исключения до верхнего уровня (Application.OnException) - это крайняя мера, использование ее, как правило, непрофессионально и предназначено, в 1-ю очередь, для отладочных целей.
Обрабатывать исключение лучше в событии TCustomSocket.OnError, при возбуждении которого параметром передается код ошибки

3. Вариант надежный (но требуется полная уверенность, что гнездовой транспорт инициализирован для работы в осн.потоке) -
вызвать ф-цию WSAGetLastError


 
Satrap   (2002-01-25 08:50) [4]

В том то и проблем, что работа сокетов вызывает не только исл. с-ии типа ESocketError, которые можно обработать в событии OnError
>DigitMan
Я вообще делал так, как Вы советуете в п1., просто мне казалось
, что некрасиво вытаскивать код ошибки из Message. Что касается WSAGetLastError, то в OnException эта функция упорно возвращает Ноль, но возможно я использую ее неправильно, спасибо всем за помощь


 
Vitaly Nevzorov   (2002-01-26 00:32) [5]

try
{somthing}
except
on e:exception do showmessage(e.message);
end;

Думаю что в обработчике можно сделать что-либо подобное или на худой конец получить класс ошибки


 
Anatoly Podgoretsky   (2002-01-26 20:37) [6]

Второй параметр передаваемый в обработчик события E: Exception, у него есть свойство Message типа string



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

Форум: "Основная";
Текущий архив: 2002.02.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.004 c
1-32206
kuban
2002-01-26 09:34
2002.02.11
VCL


7-32352
Новенький
2001-11-06 00:58
2002.02.11
Нужно написать маленький чат на Delphi для работы через Lpt-порт


1-32218
Sergey Novoselow
2002-01-25 06:02
2002.02.11
Как разложить выражение 200101 на 2001 и 01


1-32257
ТеньЛуны
2002-01-28 13:00
2002.02.11
Разнца между датами


3-32161
Макс
2002-01-16 16:45
2002.02.11
Проверка данных на программе клиенте





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский