В приложении есть процедура HandleException(Sender: TObject; E: Exception);
В ней выводится MessageBox с информацией: класс ошибки - E.ClassName, само сообщение ошибки - E.Message, класс объекта-генератора ошибки - Sender.ClassName.
В начале загрузки форм имеется присвоение
Application.OnException:=HandleException.
Как я тестировал - в код нажатия какой-то кнопки вписывал raise EMathError.Create('сообщ.') и получал красивый обработчик исключений. Но если, допустим, идет вызов процедуры через ту же кнопку, то при возникновении ошибки в процедуре выдается информация о кнопке, а не процедуре. Проблема в этом.
Хотелось бы еще как-то узнать через Sender не только класс виновника, но и его конкретное имя.
За ответы всем спасибо. Пошел мучать дальше эти эксепшны...
Опять я. Как всегда забыл еще одно. :-)
В случае возникновения ошибки в процедуре таймера, сообщения выдаются через указанный период (боже упаси, если он сильно маленький). Подскажите, как заблокировать работу приложения, когда светится модальное окно с сообщением.
NetAnton
первое. информация выдается в сообщении в HandleException, но не о процедуре, где возникло исключение, а о кнопке, нажатие на которой вызвало процедуру.
второе. работа не прекращается. хоть и появляется MessageBox, таймер себе свободно тикает, и если ошибка находится где-то в его коде, исключения выскакивают каждый миг. юзерам это не понравится.
впрочем, и с первым и вторым я разобрался. удовлетворен. Krutoy, спасибо.
расскажи как??
может код приведёшь, вдруг мне пригодиться??
Бросай мыло. я посмотрю, что там стоит твоего внимания ;)
fjodorow@list.ru