Действительно кодирует в, наконец бегутся возврат в Objective C?

Рассмотрите следующий код:

@try {
  if (something.notvalid)
  {
    return;
  }
  // do something else
} @catch (NSException *ex) {
  // handle exception
} @finally {
  NSLog(@"finally!");
}

Если something не допустимо, и я возвращаюсь из попытки, выполняет в коде @finally выполниться или нет? Я полагаю, что это должно, но другие, которых я говорил, чтобы не сделать, думают так, и я не могу протестировать это в данный момент.

15
задан Keith Pinson 15 March 2013 в 16:03
поделиться

2 ответа

@finally код всегда выполняется в соответствии с здесь и здесь.

Блок @finally содержит код, который должен быть выполнен независимо от того, будет ли исключение или нет.

15
ответ дан 1 December 2019 в 03:24
поделиться

Да. Как ни странно, это так. Я не уверен почему, но я только что создал тест и попробовал несколько конфигураций, и каждый раз это происходило.

Вот конфигурации:

  • Return in try block: останавливал выполнение блока try и вызывал выполнение finally
  • Return in try block and return in finally: останавливал выполнение try и останавливал выполнение блока finally и всего метода.
  • Возврат в блоке finally: функционировал как обычный возврат вне блока try/catch/finally.
4
ответ дан 1 December 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: