Мне было интересно, есть ли какой-либо параметр компилятора, желательно в gcc (g ++), который рассматривает отсутствие блоков try/catch как ошибки. Это стандартное поведение в java, и я всегда его любил.Задание компиляторов C++ для проверки обработки исключений
ответ
Поскольку проверяются исключения в Java полагаются на throw
подписи, вы можете прочитать, почему вы не хотите использовать throw
подписи функций в C++ в this question на SO.
Одна вещь, которую вы может сделать в C++ с исключениями - это использовать спецификации исключений для ваших функций. Это не активно предотвратить нелистингового исключения из броска от этой функции, но это делает их ошибки (и отображает их всех предопределенный unexpected()
.
Так int f() throw();
является C++ для «лечения каких-либо исключений, воскреснув из функция е как ошибка»
Возможно, стоит отметить, что это «обрабатывать как ошибку _runtime_». Компилятор C++ по-прежнему _required_ для компиляции 'void foo() throw() {throw 42; } '. –
Ну, используя спецификации исключений, как правило, плохая идея:. http://cplusplus.co.il/2009/10/06/exception-specifications/
И если не используется, компилятор в принципе не имеет никакого способа узнать, какие исключения могут быть выброшены, так что нет способ сделать это.
Что вы можете сделать, это обеспечить собственную реализацию std :: terminate (путем вызова std :: set_terminate()) и обработать исключенные исключения там.
- 1. C# класс обработки исключений
- 2. C# Область обработки исключений
- 3. Обработка исключений для обработки исключений
- 4. Задание каталога для проверки
- 5. Отсутствие обработки обработки исключений?
- 6. Стандарт для обработки исключений
- 7. Планирование обработки исключений для приложения плагина C++
- 8. Написание функции для обработки исключений в C#
- 9. Временное решение для обработки исключений в C#
- 10. Какая сущность обработки исключений
- 11. C++ самодельного сбоя обработки исключений
- 12. Реализация обработки исключений GCC C++
- 13. C++ Обработка исключений для ARM - Формат общих таблиц обработки исключений
- 14. Спецификация исключений против обработки исключений
- 15. Оптимизация кода для различных компиляторов C/C++
- 16. Обработка исключений для перекрестных компиляторов - Можно ли это сделать безопасно?
- 17. Задание необработанных исключений
- 18. Библиотека C++ для разных компиляторов
- 19. Назначение обработки исключений Java
- 20. Стратегии обработки исключений Spark Streaming
- 21. Лучшая практика для обработки исключений
- 22. Обработка обработки исключений для фона
- 23. Обработка исключений для обработки данных
- 24. Что лучше для обработки исключений?
- 25. Механизм обработки исключений для рук
- 26. ресурсы обработки исключений для java
- 27. Протокол обработки исключений для методов
- 28. Использование аннотаций для обработки исключений?
- 29. Методы обработки исключений XSLT
- 30. Способы обработки исключений
Нет, и в принципе это невозможно, учитывая дизайн стандарта, поскольку во время компиляции невозможно точно знать, какие функции будут называться. –
Найдите основную функцию. Поместите все в блок try-catch. Нет ошибки. :) (Интересно, что произойдет, если исключения возникают при построении глобальных переменных?) – UncleBens