Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Опять исключения

295
05 марта 2003 года
gray_k
356 / / 20.12.1999
А существует ли самый верхний класс исключений, который будет отлавливать в catch() ВСЕ ошибки.
Если писать catch(...), то в лог не запишешь какая ошибка произошла, а хотелось бы записать класс исключения и его сообщение. Перечислять все классы в блоках catch геморрно да и не знаешь их всех.
2.0K
05 марта 2003 года
Skolotovich
39 / / 13.12.2002
Цитата:
Originally posted by gray_k
А существует ли самый верхний класс исключений, который будет отлавливать в catch() ВСЕ ошибки.
Если писать catch(...), то в лог не запишешь какая ошибка произошла, а хотелось бы записать класс исключения и его сообщение. Перечислять все классы в блоках catch геморрно да и не знаешь их всех.



Приветствую

Есм такой класс Exception он называется (см. help)
все классы исключений порождены от него.

2.0K
07 марта 2003 года
segev
67 / / 19.01.2003
Skolotovich
Цитата:

Есм такой класс Exception он называется (см. help)
все классы исключений порождены от него.


Не обязательно. Ничто не мешает объявить класс исключений не порожденный от Exception.

362
07 марта 2003 года
_kolyan
339 / / 03.12.2002
Цитата:
Originally posted by segev
Skolotovich

все классы исключений порождены от него

Не обязательно. Ничто не мешает объявить класс исключений не порожденный от Exception.



Имеются в виду все классы VCL-исключений, естесственно. Они все от Exception

2.0K
08 марта 2003 года
segev
67 / / 19.01.2003
_kolyan
Цитата:

Имеются в виду все классы VCL-исключений, естесственно. Они все от Exception


Ясновидящий что-ли ? Или передача мыслей на расстоянии: Новосибирск-Киев :D
Если серьезно, то в хороших программах своих исключений не меньше чем VCL-ких и не факт, что они будут наследоваться от Exception. Кроме того, есть класс exception (с маленькой буквы), от которого порождаются все стандартные классы исключений C++. То есть универсального решения этой проблемы нет. По крайней мере на уровне языка.

1.9K
14 марта 2003 года
DarkSide
41 / / 14.03.2003
Цитата:
Originally posted by segev
_kolyan

Ясновидящий что-ли ? Или передача мыслей на расстоянии: Новосибирск-Киев :D
Если серьезно, то в хороших программах своих исключений не меньше чем VCL-ких и не факт, что они будут наследоваться от Exception. Кроме того, есть класс exception (с маленькой буквы), от которого порождаются все стандартные классы исключений C++. То есть универсального решения этой проблемы нет. По крайней мере на уровне языка.



Есть еще вариант:
отлавливать event TApplication OnException. Прототип: void __fastcall AppException(TObject *Sender, Exception *Е);

а Е в свою очередь имеет поля и методы, с помощью которых можно узнать тип экзепшена и само сообщение об ошибки, которые можно отловить и записать в лог.

2.0K
16 марта 2003 года
segev
67 / / 19.01.2003
DarkSide
Цитата:

Есть еще вариант:
отлавливать event TApplication OnException.
Прототип: void __fastcall AppException(TObject *Sender, Exception *Е);

а Е в свою очередь имеет поля и методы, с помощью которых можно узнать тип экзепшена и само сообщение об ошибки, которые можно отловить и записать в лог.


Идея неплохая - действительно перехватывает все исключения. Но есть свои минусы: действительное сообщение об ошибке получить сложно (а может и невозможно, не знаю). При перехвате любых не-VCL исключений выдается стандартное: "C++ exception", а что именно случилось непонятно. Во-вторых исключения перехватываются только в основном потоке обработки сообщений. Если работа ведется в параллельном потоке, как и зачастую бывает, метод не годится.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог