Я полностью осознаю, что Swift не имеет механизма try/catch для обнаружения исключений (OK, Swift 2.0 теперь поддерживает их). Я также понимаю, что многие методы API возвращают NSError, который будет заполнен объектом ошибки, если что-то пойдет не так. Поэтому, пожалуйста, не указывайте мне на этот вопрос: Обработка ошибок в Swift-Language
Но это все еще не объясняет, как реагировать на ошибки времени выполнения в вашем собственном коде, например, получать доступ к массиву вне пределов доступа или принудительно разворачивать необязательное значение, равное нулю. Например:
var test: String?
test = nil
println(test!) //oops!
или
var arr = [0,1,2]
for i = 0...3 {
println(arr[i]) //oops!
}
Каждый программист иногда делает такие ошибки, и должен быть способ, по крайней мере, записать их для последующего анализа. Во время отладки Xcode может показать нам это, но что, если это произойдет с конечным пользователем или бета-тестером? В чистом C есть обработка сигнала, и ее можно использовать и в Objective-C. В Свифте есть что-то подобное? Централизованный обратный вызов был введен непосредственно перед тем, как приложение умирает?
Update:
Позвольте мне перефразировать вопрос: в большом проекте не удается вручную проверить указанные выше ошибки на каждом цикле и принудительно развернуть. Когда в конечном итоге возникает ошибка времени выполнения, существует ли обратная связь, например, обработка объекта Seegfault Objective C или NSSetUncaughtExceptionHandler, которая будет вызвана так, чтобы ошибка могла быть зарегистрирована/отправлена по электронной почте вместе со стоп-лоском аварии?