Исключения в C++
От: burtsev  
Дата: 23.09.02 05:50
Оценка:
Всем доброе время суток.
Меня интересует, как можно бороться с появлением непойманных исключений в C++? Когда я пишу на Java, то компилятор заставляет меня писать либо catch() либо в прототипе ф-ций писать throws. Таким образом получается, что я не могу пропустить непойманное исключение, кроме специально оговоренного вида исключений.
Когда я попробовал на C++ написать в прототипе throw(...), то с точки зрения компилятора (VC6,VC7) ничего не изменилось. Поискав по хелпам, никаких флагов специальных не нашел. В итоге, мне нужно помнить, кто какие исключения выбрасывает, а это бывает неудобно, особенно если типов исключений много. Наиболее остро проблема встаёт при добавлении нового типа исключения в существующий код... Кто что знает по этому поводу?

Заранее спасибо.
Re: Исключения в C++
От: Stanley Kay  
Дата: 23.09.02 06:07
Оценка:
Здравствуйте burtsev, Вы писали:

B>Всем доброе время суток.

B> Меня интересует, как можно бороться с появлением непойманных исключений в C++? Когда я пишу на Java, то компилятор заставляет меня писать либо catch() либо в прототипе ф-ций писать throws. Таким образом получается, что я не могу пропустить непойманное исключение, кроме специально оговоренного вида исключений.
B> Когда я попробовал на C++ написать в прототипе throw(...), то с точки зрения компилятора (VC6,VC7) ничего не изменилось. Поискав по хелпам, никаких флагов специальных не нашел. В итоге, мне нужно помнить, кто какие исключения выбрасывает, а это бывает неудобно, особенно если типов исключений много. Наиболее остро проблема встаёт при добавлении нового типа исключения в существующий код... Кто что знает по этому поводу?

Если я правильно понял то, что ты хочешь -- то все просто:
try
{
// здесь может возникнуть любое исключение
}
catch (...)
{
// здесь мы его ловим
}


catch (...) — означает обработчик для любого (неизвестного) исключения
Re: Исключения в C++
От: Bell Россия  
Дата: 23.09.02 06:10
Оценка: 3 (1)
Здравствуйте burtsev, Вы писали:

B>Всем доброе время суток.

B> Меня интересует, как можно бороться с появлением непойманных исключений в C++? Когда я пишу на Java, то компилятор заставляет меня писать либо catch() либо в прототипе ф-ций писать throws. Таким образом получается, что я не могу пропустить непойманное исключение, кроме специально оговоренного вида исключений.
B> Когда я попробовал на C++ написать в прототипе throw(...), то с точки зрения компилятора (VC6,VC7) ничего не изменилось. Поискав по хелпам, никаких флагов специальных не нашел. В итоге, мне нужно помнить, кто какие исключения выбрасывает, а это бывает неудобно, особенно если типов исключений много. Наиболее остро проблема встаёт при добавлении нового типа исключения в существующий код... Кто что знает по этому поводу?
Не знаю насчет VC7, а VC6 exception specification не поддерживает, о чем и написано в MSDN:
Microsoft C++ does not support the function exception specification mechanism, as described in section 15.4 
of the ANSI C++ draft.

Что касается проверки отловленности всех исключений на этапе компиляции — к сожалению в С++ это невозможно. Можно также посмотреть вот этот топик
Автор: Vladik
Дата: 11.09.02

B> Заранее спасибо.
На здоровье
Любите книгу — источник знаний (с) М.Горький
Re: Исключения в C++
От: Anton V. Kolotaev  
Дата: 23.09.02 06:14
Оценка:
Здравствуйте burtsev, Вы писали:

B> Когда я попробовал на C++ написать в прототипе throw(...), то с точки зрения компилятора (VC6,VC7) ничего не изменилось.


Насколько я помню, VC6 просто игнорирует exception specification (и даже предупреждает, что игнорирует), что есть неправильно.
Re[2]: Исключения в C++
От: burtsev  
Дата: 23.09.02 06:34
Оценка:
Здравствуйте Bell, Вы писали:

B>Здравствуйте burtsev, Вы писали:


B>>Всем доброе время суток.

B>> Меня интересует, как можно бороться с появлением непойманных исключений в C++? Когда я пишу на Java, то компилятор заставляет меня писать либо catch() либо в прототипе ф-ций писать throws. Таким образом получается, что я не могу пропустить непойманное исключение, кроме специально оговоренного вида исключений.
B>> Когда я попробовал на C++ написать в прототипе throw(...), то с точки зрения компилятора (VC6,VC7) ничего не изменилось. Поискав по хелпам, никаких флагов специальных не нашел. В итоге, мне нужно помнить, кто какие исключения выбрасывает, а это бывает неудобно, особенно если типов исключений много. Наиболее остро проблема встаёт при добавлении нового типа исключения в существующий код... Кто что знает по этому поводу?
B>Не знаю насчет VC7, а VC6 exception specification не поддерживает, о чем и написано в MSDN:
B>
B>Microsoft C++ does not support the function exception specification mechanism, as described in section 15.4 
B>of the ANSI C++ draft.
B>

B>Что касается проверки отловленности всех исключений на этапе компиляции — к сожалению в С++ это невозможно. Можно также посмотреть вот этот топик
Автор: Vladik
Дата: 11.09.02

B>> Заранее спасибо.
B>На здоровье
Да уж... Хорошо хоть определеность по этому поводу имеется, закрепленная срандартом.
Re: Исключения в C++
От: WolfHound  
Дата: 23.09.02 20:08
Оценка:
Здравствуйте burtsev, Вы писали:

А так не подходит?

void f()throw(std::bad_exception)
{
}
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: Исключения в C++
От: Аноним  
Дата: 23.09.02 21:39
Оценка:
B>Что касается проверки отловленности всех исключений на этапе компиляции — к сожалению в С++ это невозможно. Можно также посмотреть вот этот топик
Автор: Vladik
Дата: 11.09.02

Народ, да вы чего постите? А?
Исключения для того и нужны, чтоб их ловить по "ходу дела"
Вощим, мои последния изучения С++ и СОМ доказали, что СОМ — это недоделанная до ума Java
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.