Меня интересуют различные способы, которыми предупреждения и ошибки обрабатываются (и могут быть) в языках программирования. Насколько я знаю, единственной функцией на уровне языка, связанной с ошибками / предупреждениями, являются следующие:
- ошибки / предупреждения компилятора (которые могут быть созданы программистами с помощью команд компилятора, обычно это зависит от компилятора)
- консольные ошибки, которые могут быть перенаправлены в файл - например, stderr в C-like langauges
- бросаемые объекты исключений с использованием явных классов исключений (как в java)
- простые строковые исключения (как в php и javascript, например, throw («Dental error»);
Есть ли другие структуры, о которых я не упомянул? Как вы думаете, какие еще функции на уровне языка должны существовать / могут быть полезны?
Сначала я использую структуры, подобные исключениям, для обоих случаев, когда необработанное предупреждение регистрируется в плоском файле (или выводится во время компиляции, если компилятор может доказать, что это произойдет). Я не могу решить, является ли хорошей идеей принудительно заставить методы явно обрабатывать исключения, или им следует разрешить "всплывать".
Какие существуют структуры и идеи обработки ошибок и предупреждений?