Один из случаев, когда я использую его, - это когда я выполняю многоуровневую проверку и не хочу добавлять дополнительный код, когда я могу просто перейти к соответствующему разделу после моих проверок.
Например, есть эта система, которая проверяет состояние различных машин на складе, и выходит из строя хранилища в целом и отправляет предупреждение, если какая-либо часть какой-либо одной системы мертва, в псевдокоде она выглядит следующим образом это:
if(hsensor[status] != OK) {
alert = Humidity sensor hsensor[fail_id] failed with error hsensor[fail_error]
goto sendAlert;
}
if(cosensor[status] != OK) {
alert = Co2 sensor cosensor[fail_id] failed with error cosensor[fail_error]
goto sendAlert;
}
Таким образом, если что-нибудь не удастся, я могу пропустить все другие проверки и сразу перейти к предупреждению. Тот, кто находится на вызове, получает предупреждение и извлекает полный результат любой функции, называемой предупреждением, чтобы он мог ее исправить.