2015-07-30 3 views
3

Поскольку у нас, к счастью, есть исключения со времен Swift 2, я задавался вопросом, есть ли способ выбросить исключенное исключение. Иногда просто не имеет смысла окружать утверждение предложением throw-catch, потому что ошибка возникает только при очень специфических обстоятельствах. Если это невозможно, я хотел бы знать, какая хорошая практика обрабатывает ошибку, которую не следует проверять каждый раз в Swift? Должен ли я позвонить fatalError, который сбой программы, или я должен поднять NSException, который явно не является Swifty способом сделать это, поскольку я даже не могу поймать NSException в чистом Swift, я думаю.Быстрое исключение исключений

Спасибо за ваши ответы.

+4

У нас нет исключений. 'do catch' вызывает это, но это действительно касается [Обработка ошибок] (https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html). Если вы хотите избежать 'do catch', вы можете использовать' try! '. Документы: _Создание функции или метода бросания с помощью try! отключает распространение ошибок и завершает вызов в заявлении во время выполнения, что никакая ошибка не будет выбрана. Если на самом деле возникает ошибка, вы получите ошибку времени выполнения. – robertvojta

+0

Спасибо, я пока этого не видел;) – borchero

ответ

3

Если вы пишете функцию и хотите указать, что что-то внутреннее пошло не так (например, с предварительным условием не удалось), fatalError и preconditionFailure - это то, что нужно назвать. Бонусные баллы для использования их с ограждением:

guard let myPrecondition = myOptionalPrecondition else { preconditionFailure("Precondition should never be optional here!") } 

или

guard somePrecondition else { preconditionFailure() } 
Смежные вопросы