Саша, читай Таненбаума. Это чрезвычайно полезно и снимет множество твоих вопросов. А если еще и поймешь его, то не будет нужды фантазировать.
SashaMercury |
---|
Первый вопрос, нужны ли исключения ? |
Нет.
SashaMercury |
---|
1.1 Мне кажется, что существует два типа исключений: исключения программиста(к этому классу я отнесу исключения возникающие в результате работы пользователя, и возникновения нестандартной ситуации, которую не предусмотрел программист, т.е. я рассматриваю идеального программиста. впрочем, если бы я рассматривал не идеального программиста, то возможный третий класс исключений-"пользовательские исключения", всё равно был бы подклассом исключений по вине программиста), и исключения независимые от программиста. 1.1.2 Существует ли первый класс исключений ? Да, существует. Какие исключения принадлежат этому классу ? Вероятно это такие ситуации, когда программист хочет чтобы поток выполнения программы кардинальным образом (думаю вы понимаете о чём я, например функция возвращает целое число, возвращать целое в качестве ошибки неправильно, мы должны сделать что-то другое) менялся. 1.1.2.1 Существует ли подкласс пользовательских исключений в Исключениях программиста ? Фактически, вопрос такой, можно ли спроектировать программу в рамках существующей архитектуры ЭВМ таким образом, чтобы не возникало нештатных ситуаций в которых требовалось бы кардинальным образом менять поток выполнения программы ? Не знаю, но даже если существует, все эти ситуации могут быть отнесены к пункту 1.1.2 |
эээээ..... чего?
Пожалуйста, прочитай учебник. Ну просто жуть берет от фантазий. Не, фантазировать это кончено полезно, но лучше фантазировать на основе реальных знаний.
Так что бери Таненбаума и читай до просветления.
SashaMercury |
---|
2.1 Почему в языке программирования Си отсутствует встроенный механизм обработки ситуаций, при которых необходимо кардинальное изменение потока программы ? |
Потому что этот механизм не являются абсолютно необходимой вещью. К тому-же, этот ЯП развивался из другого языка (B) который был почти что макро-ассемблером.
Почему исключения не добавили в язык в более поздних редакциях? Опять таки: а зачем? Как показала жизнь, можно прекрасно жить без них.
И да, вполне возможно, что в следующей редакции языка Си введут подержку исключений на уровне языка. Вот только Си развивается по факту (что полезно и без чего трудно жить - добавим, остальное нафиг). Так что я очень сомневаюсь что механизм исключений введут в Си.
SashaMercury |
---|
2.2 Это можно сделать относительно корректным образом только с помощью сигналов ? (не интересны варианты с резервированием констант для возврата, и аналогичные) |
Система сигналов не является аналогом для языковых исключений. Сигналы это исключения уровня ОС.
Так что единственный "корректный" аналог для исключений в Си это будет множество goto в паре с глобальным объектом "исключение". Пример такого глобального объекта - смотри WinAPI с его GetLastError() функцией. Вынеси обработку ошибок в один общий блок под меткой, и делай goto на эту метку если какая-то функция завершилась с ошибкой.