gpt4 book ai didi

swift - NSSetUncaughtExceptionHandler 在 Swift 3 中没有触发?

转载 作者:行者123 更新时间:2023-11-30 13:06:19 26 4
gpt4 key购买 nike

我正在 try catch Swift3 程序中的所有 NSException - 一直在关注 this Stack Overflow answer

所以我得到了这个:

override func viewDidLoad() {
super.viewDidLoad()
NSSetUncaughtExceptionHandler { exception in
print("EXCEPTION CAUGHT HERE....")
print(exception)
print(exception.callStackSymbols)
}

// force NSException
let array = NSArray()
_ = array.object(at: 99)

}

但是异常没有被调用相反,我得到这个输出:

2016-09-04 14:49:14.252 catchAllErrorsTest[8126:164827] Failed to set (contentViewController) user defined inspected property on (NSWindow): *** -[__NSArray0 objectAtIndex:]: index 99 beyond bounds for empty NSArray

我还尝试将异常放入AppDelegate(在applicationWillFinishLaunching和applicationDidFinishLaunching中),但结果相同

最佳答案

我做了如下操作并在 Swift 3 中为我工作。将 NSSetUncaughtExceptionHandler 定义为 AppDelegate 中任何方法声明之外的常量:

let uncaughtExceptionHandler : Void = NSSetUncaughtExceptionHandler { exception in
NSLog("Name:" + exception.name.rawValue)
if exception.reason == nil
{
NSLog("Reason: nil")
}
else
{
NSLog("Reason:" + exception.reason!)
}

}

这会在任何未捕获的异常时触发,因为一旦您的应用程序委托(delegate)实例加载(即应用程序启动时)就会评估该常量。注意:Void 类型声明删除了针对“可能是意外”的 Void 推断类型的编译器警告;-) 。

关于swift - NSSetUncaughtExceptionHandler 在 Swift 3 中没有触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39313663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com