true
, то выполнение кода продолжается в обычном режиме; иначе текущее состояние программы некорректно, а выполнение кода прекращается и приложение терминируется.
assert(_:_:file:line)
. Вы передаёте в эту функцию выражение, которое может быть вычислено в true
или false
, и сообщение, которое отобразится в случае, если результат условия - false
. Например:
let age = -3
assert(age >= 0, "Возраст человека не может быть меньше нуля")
В этом примере выполнение кода продолжается, если выражение age >= 0
вычисляется в true
, что значит - значение age
положительно. Если значение age
отрицательно, как в коде выше, тогда значение age >= 0
вычисляется в false
, то оператор выполнения проваливается, терминируя приложение.
let age = -3
assert(age >= 0)
assertionFailure(_:file:line)
для индикации того, что оператор выполнения проваливается. Например:
let age = -3
if age > 10 {
print("Вы можете кататься на американских горках или чёртовом колесе")
} else if age > 0 {
print("Вы можете кататься на чёртовом колесе")
} else {
assertionFailure("Возраст человека не может быть меньше нуля")
}
Как можно заметить, будет выведено сообщение "Возраст человека не может быть меньше нуля".
precondition(_:_:file:line)
. Вы передаёте в эту функцию выражение, вычисляемое в true
или false
и сообщение, выводимое в случае, если условие - false
. Например:
//Реализация индекса
precondition(index > 0, "Индекс должен быть больше 0")
preconditionFailure(_:file:line)
для отображения того, что ошибка уже случилась, например, если был выбран кейс инструкции switch
по-умолчанию, но все корректные случаи вводимых данных должны быть обработаны одним из других кейсов.
fatalError(_:file:line:)
всегда вызовет прерывание выполнения вне зависимости от настроек оптимизации.
fatalError(_:file:line:)
в процессе прототипирования и ранней разработки для создания заглушен для функционала, который ещё нереализован, написав fatalError("Unimplemented")
. Так как фатальные ошибки никогда не вырезаются при оптимизации в отличие от операторов выполнения и предусловий, Вы можете быть уверены, что выполнение всегда будет прервано, когда достигнет заглушек имплементации.