Как размотать (многоуровневый возврат) стек без catch / try / поднимать? - PullRequest
4 голосов
/ 15 февраля 2011

Я хотел бы развернуть стек на произвольный уровень, когда catch / try недоступен (т. Е. Код, к которому я обращаюсь, находится вне моего контроля).Возможно ли это?

Например, при тестировании я хотел бы, чтобы мои тесты вызывали метод, который проверяет наличие предварительных условий, и отменяет вызов вызывающей стороны теста, если эти предварительные требования не выполнены (резюме на caller[1]).Поскольку тестовый жгут находится вне моего контроля, я не могу установить блок catch в соответствующем месте.

1 Ответ

1 голос
/ 25 февраля 2011

Нет.Единственный другой механизм для многоуровневых возвратов - callcc, но для этого также необходимо создать продолжение на уровне, который находится вне вашего контроля.может псевдоним метода в тестовой среде и добавить любой код, который вы хотите.

...