Во многих системах обработки исключений, если подпрограмма «foo» вызывает «bar», которая, в свою очередь, вызывает «moo», а «moo» выдает исключение, единственный способ, которым исключение может чисто вернуть его к «foo»если у "bar" есть код для обработки исключения.Даже если «bar» разрешит распространению исключения неперехваченным, ему, как правило, придется убедиться, что его локальные переменные должным образом уничтожены, прежде чем выполнению разрешат покинуть область действия.Это потребует добавления дополнительного кода в «bar»;в большинстве систем часть этого кода должна будет выполняться, даже если не выдано исключение.
BTW, на некоторых процессорах ARM, таких как Cortex M3 или, например, на Arm7, работающих в режиме ARM, если вызывающая сторона такжеБудучи запущенным в режиме ARM, можно разрешить исключения без каких-либо затрат времени выполнения, если «нормальный» возврат подпрограммы перейдет к LR + 4 (на четыре байта больше нормального адреса возврата) и получит исключительный выход к LR (который тогда будет 4-байтовой инструкцией ветвления).Такое поведение будет противоречить обычной практике ARM, и такой дизайн не будет хорошо переноситься на Cortex M0.