все зависит от того, что мы хотим получить в каждом конкретном случае...
в любом случае, выход из процедуры не является "плохим" вариантом,
плохо будет работать потом, после исполнения процедуры...
объясню, процедуры могут быть определяющими дальнейшую обработку, либо не определяющими (это не стандарт, просто так назвал), т.е. если после исполнения процедуры нам важно работать с каким-либо результатом ее действий, то процедура должна быть определяющей.
для определяющих процедур лучше использовать функции, т.к. их результат легче обработать, но можно использовать процедуры, которые возвращают результат как параметр.
если процедура не определяющая, то свободно можно использовать выход из процедуры, в крайнем случае, нам потребуется дополнительное оповещение пользователя о неудачном выполнении процедуры:
Код:
if badCondition then
Messagebox "Bad condition"
exit sub
end if
если процедура определяющая, то придется добавить какой-то результат ее работы:
Код:
if badCondition then
error 1000, "Bad condition"
end if
Код:
if badCondition then
result = errCode
exit sub
end if
я бы рекомендовал все процедуры писать как определяющие, в таком случае это не приведет к необходимости ее исправления при надобности, а затраты почти нулевые, т.к. в любом случае в процедуры добавляются обработчики ошибок, а в обработчике это все дело легко реализуется... если вы не используете обработчики, я рекомендую начать
единственное, что иногда труднее определить как именно отображать ошибку наверх, т.е. тут два варианта:
1) сгенерировать исключение и передать его в вызывающую процедуру, которая в свою очередь должна будет обработать его;
2) просто вернуть флаг исключение, например result = false, а вызывающая процедура смотрит
Код:
if mysub() then
дальнейшая работа
else
обработка неудачной ситуации
end if