try vs goto
новая дискуссия
Дискуссия
215
Ключевая особенность try/catch/finally - это сохранение контекста перед вызовом на стек, и очистка его в finally или восстановление в catch. Под контекстом понимается содержимое всех регистров, включая счётчик команд (точно так же, как делается при переключении процессов в ОС). Без этого нельзя сделать откат при ошибке. Соответственно, try - дорогая операция.
Аналог try/catch в С - setjmp/longjmp.
Да, пользоваться try вместо goto можно, но дорого. В языках типа java/c# желательно известные типы ошибок обрабатывать обычной проверкой, вместо try. Ну и соответственно ненужные try - хороший задел по оптимизации)