Инструменты проверки инвариантов: assert чаще debug-only, precondition может оставаться в release (зависит от настроек), fatalError всегда завершает.
Разбор
- Не для recoverable user errors.
- Сообщения помогают диагностике.
assertionFailure без условия.
- В библиотеках документируйте traps.
Итог
Trap-функции ловят programming errors, не бизнес-ошибки пользователя.