swift - Как бороться с неперехваченным исключением

Если использовать NSSetUncaughtExceptionHandler, он обрабатывает только ошибки времени выполнения Objective-C. https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/index.html#//apple_ref/c/func/NSSetUncaughtExceptionHandler

NSSetUncaughtExceptionHandler может поймать исключение:

var a: NSArray = [""]
println(a[2])

Но NSSetUncaughtExceptionHandler не может ловить исключения:

var a = [""]
println(a[2])

Как быстро справиться с необъективными ошибками времени выполнения C (быстрыми ошибками времени выполнения) ??


person Injoy    schedule 24.06.2015    source источник
comment
У меня та же проблема, кажется, что NSSetUncaughtExceptionHandler не работает с быстрыми исключениями.   -  person Hasan Sawaed    schedule 04.08.2016


Ответы (2)


Если вы хотите обработать исключение из индекса, вы всегда можете проверить элемент индекса.

extension Collection {
    /// Returns the element at the specified index if it is within bounds, otherwise nil.
    public subscript (safe index: Index) -> Element? {
      return indices.contains(index) ? self[index] : nil
    }
}
person Nick    schedule 05.08.2019

Уже был исчерпывающий ответ на аналогичный вопрос Обработка ошибок в Swift-Language. Посмотрите на первый ответ, который включает последние обновления Swift 2.0 по этой теме.

person Ivan Rigamonti    schedule 24.06.2015
comment
Я имею в виду обработчики необработанных исключений, а не try catch - person Injoy; 25.06.2015
comment
@Injoy - у тебя есть решение? - person Durai Amuthan.H; 23.02.2016
comment
Это не отвечает на вопрос. Связанный вопрос касается ошибок на уровне пользователя, этот вопрос касается отлова и обработки фатальных ошибок. Мои исследования по этой теме показывают, что в настоящее время нет эквивалентного способа отлова фатальных ошибок. - person Fizker; 23.03.2016