Comdiv, спасибо за содержательное обсуждение. Похоже, да, что паника - это исключения, т.к. она обрабатывает defer (которые есть блоки finally), т.е. есть раскрутка стека. Хотя я не в курсе, почему исключения в С++ считаются дорогими и страдает ли голанг от этой проблемы. Впрочем, идея Оберона, как я её понял, состоит в том, что мы не ставим быстродействие во главу угла. Мы ставим во главу угла простоту и надёжность. Если исключения позволяют упростить работу и сделать программы более надёжными, то их можно использовать, даже если они медленные. Но defer может быть использовать и отдельно от паники, и отдельно от исключений. В этом случае он служит для реализации RAII и в этом виде полезен (хоть и многословен). RAII сама по себе с исключениями не связана, она становится актуальной при наличии более чем одной точки выхода из функции. Да и просто удобно: открыл файл, в этом же месте (а не 20 строчками ниже) позаботился о том, чтобы файл закрылся, и забыл об этом вопросе. С исключениями это опять же не связано.

Осталось выяснить, нет ли исключений в Обероне, ведь в ББЦБ и BlueBottle нём есть локализация ошибки в активности или в обработчике события. Там есть и trap cleaner. Впрочем, лично мне сейчас это неважно. У меня в вопросе исключений каких-то убеждений. Мне кажется, что хорошего подхода к обработке ошибок пока не придумано.