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

Ваш аккаунт

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

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

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

Генерирование исключения

284
21 июля 2006 года
michael_is_98
587 / / 25.02.2005
Здравствуйте!

Возник вопрос по поводу генерирования исключения с его последующей обработкой. Здесь вижу два пути:
1) создание своего класса исключения
2) использование класса, созданного на основе какого-либо готового класса

2 путь явно проще, но здесь возникает вопрос - какой класс из какой библиотеки использовать в качестве базового?

Есть класса CException в библиотеке MFC, а есть класс exception, который идет вместе с STL. Являюсь сторонником переносимых программ, поэтому вроде бы класс exception из STL предпочтителен. Но в приложении, в котором используется STL и MFC использование класса исключения, созданного на основе exception, может вызвать опред. сложности (напрмер,из-за того, что MFC подменяет обработчик ошибок оператора new и может генерировать свои исключения).

Подскажите, что можно сделать в этом случае?
562
21 июля 2006 года
tarekon
175 / / 19.08.2003
[QUOTE=michael_is_98]Здравствуйте!

Возник вопрос по поводу генерирования исключения с его последующей обработкой. Здесь вижу два пути:
1) создание своего класса исключения
2) использование класса, созданного на основе какого-либо готового класса

2 путь явно проще, но здесь возникает вопрос - какой класс из какой библиотеки использовать в качестве базового?

Есть класса CException в библиотеке MFC, а есть класс exception, который идет вместе с STL. Являюсь сторонником переносимых программ, поэтому вроде бы класс exception из STL предпочтителен. Но в приложении, в котором используется STL и MFC использование класса исключения, созданного на основе exception, может вызвать опред. сложности (напрмер,из-за того, что MFC подменяет обработчик ошибок оператора new и может генерировать свои исключения).

Подскажите, что можно сделать в этом случае?[/QUOTE]
Я не совсем разбираюсь в библиотеке MFC и STL, поэтому мне интересно: чем может подмена обработчика помешать работе программы? Я не думаю, что MFC так спроектирован, что использование собственных классов исключений запрещено. Да и какая для MFC разница, вывели ли Вы класс из exception или создали самостоятельно?
284
21 июля 2006 года
michael_is_98
587 / / 25.02.2005
Мне жаль, но похоже MFC все же если не запрещает, то ограничивает сложную область обработки исключений... На это указывает хотя тот факт, что MS не рекомендует использовать MFC и STL в одном проекте. Так я прочитал в одном журнале. Поэтому и задаю вопрос. Ведь появились еще SEH (Structered Exception Handling) - а это только MS нововведение.
А то что MFC переопределяет обработчик ошибки при выделении памяти означает, что при подобной ошибки создастся исключение MFC.

Поэтому и сложно решить - что брать за основу в STL/MFC-проекте. MFC или STL классы или вообще ориентироваться на SEH...
562
21 июля 2006 года
tarekon
175 / / 19.08.2003
[QUOTE=michael_is_98]Мне жаль, но похоже MFC все же если не запрещает, то ограничивает сложную область обработки исключений... На это указывает хотя тот факт, что MS не рекомендует использовать MFC и STL в одном проекте. Так я прочитал в одном журнале. Поэтому и задаю вопрос. Ведь появились еще SEH (Structered Exception Handling) - а это только MS нововведение.
А то что MFC переопределяет обработчик ошибки при выделении памяти означает, что при подобной ошибки создастся исключение MFC.

Поэтому и сложно решить - что брать за основу в STL/MFC-проекте. MFC или STL классы или вообще ориентироваться на SEH...[/QUOTE]
Но разве исключение, генерируемое при той же нехватке памяти влияет на остальную часть программы? Ну и пусть себе возникает, главное - правильно обработать. Я создавал приложения, использующие MFC+STL+CORBA. Исключения там летали, как черти, но все работало нормально.
284
22 июля 2006 года
michael_is_98
587 / / 25.02.2005
[QUOTE=tarekon]Но разве исключение, генерируемое при той же нехватке памяти влияет на остальную часть программы? Ну и пусть себе возникает, главное - правильно обработать. Я создавал приложения, использующие MFC+STL+CORBA. Исключения там летали, как черти, но все работало нормально.[/QUOTE]
Может косвенно влиять. Посмотрите ссылку
http://forum.sources.ru/index.php?showtopic=49090&st=0&#entry1166156
350
10 августа 2006 года
cheburator
589 / / 01.06.2006
Не знаю как вы, но я лично всегда создавал свои классы исключений, и всё работало. И STL, и MFC, и моё.
284
11 августа 2006 года
michael_is_98
587 / / 25.02.2005
Проблема не в том, чтобы все работало, а в том, чтобы даже для создания своих исключений не отступиться от общепринятых подходов и создать логичные классы исключений ...
Поэтому если и создавать свои классы исключений, лучше сделать их производными от каких-либо базовых классов - exception в STL, CException - в MFC. Первый видимо лучше (с учетом декларируемой переносимости программ STL между платформами и компиляторами).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог