У нас есть 2 приложения, первый - проект VCL, другой - служба Windows.
В проекте VCL мы делаем:
try
except
on E: Exception do
// do something with E.Message
end
но в службе windows (которая использует несколько потоков) мы используем:
try
except
// do something with Exception(ExceptObject).Message
end
Информация, полученная от моих сотрудников, заключается в том, что "мы должны использовать ExceptObject в потоках и E: Исключение в приложениях, которые используют GUI". Но я ничего не мог найти по этому поводу.
Я нашел здесь пример http://edn.embarcadero.com/article/10452, где он использует переменную экземпляра для хранения исключения и использует ExceptObject, но не дает объяснений почему.
Является ли этот ExceptObject даже потокобезопасным (поскольку он исходит от устройства "Система" )?
Итак, каков правильный способ обработки исключений в Delphi и почему существует более чем один способ сделать это?