2016-02-22 3 views
3

Цель NSSetUncaughtExceptionHandler состоит в том, чтобы поймать исключение и выгрузить его где-нибудь, чтобы мы могли найти, почему приложение разбилось и что является исключением.NSSetUncaughtExceptionHandler не получает исключение в swift, но Crittercism делает это

В Objective C это перехватывает исключение, как expected..Here является reference

Но Свифт, когда возникает исключение его не поймали. Вот код, который я использовал в didFinishLaunchingWithOptions

NSSetUncaughtExceptionHandler { exception in 
      NSUserDefaults.standardUserDefaults().setObject("Exception Details Are \n\nExceptionName--> \(exception.name) \nReason -->\(exception.reason!)\n\(exception.description)", forKey: "Exception") 
      NSUserDefaults.standardUserDefaults().setObject("Call Stack Symbols:\(exception.callStackSymbols)", forKey: "ExceptionCallstack") 
      NSUserDefaults.standardUserDefaults().synchronize() 
     } 

Вот фрагмент кода, который я использую, чтобы врезаться АРР,

var c=["a","b","c"] 
    var d=c[4] 

Может кто-нибудь сказать мне, что я делаю неправильно здесь.

+0

Как вы проверяете, что? (Вы не можете поймать ошибки времени выполнения Swift.) –

+0

Oh! Есть ли все-таки, чтобы уловить быстрые ошибки времени выполнения? Я обновил этот вопрос с помощью фрагмента, который я использую для сбоя приложения. –

+0

Насколько я знаю ... swift работает на той же самой runtime, что и Objective C –

ответ

0

Инициализировать Crittercism перед установкой NSSetUncaughtExceptionHandler.

И в начале обработчика, звоните:

[Crittercism logHandledException: исключение]; // ObjC

или Crittercism.logHandledException (исключение) // Swift

+0

Я пытаюсь поймать крах, просто используя 'NSSetUncaughtExceptionHandler' или какой-нибудь другой собственный код без использования стороннего типа * Crittercism * –