swift – 试试,试试! &try?有什么区别,什么时候使用每个?
发布时间:2020-12-14 06:02:30 所属栏目:百科 来源:网络整理
导读:在 Swift 2.0,苹果推出了一种新的方式来处理错误(do-try-catch)。 几天前在Beta 6中引入了一个更新的关键字(试试?)。 此外,知道我可以使用try! 3个关键字之间有什么区别,以及何时使用每个? 假设以下投掷函数: enum ThrowableError : ErrorType { case
在
Swift 2.0,苹果推出了一种新的方式来处理错误(do-try-catch)。
几天前在Beta 6中引入了一个更新的关键字(试试?)。 此外,知道我可以使用try! 3个关键字之间有什么区别,以及何时使用每个?
假设以下投掷函数:
enum ThrowableError : ErrorType { case BadError } func doSomething() throws -> String { if everythingIsFine { return "Everything is ok" } else { throw ThrowableError.BadError } } 尝试 当你尝试调用一个可能抛出的函数时,你有两个选项。 您可以通过在do-catch块中包围您的调用来负责处理错误: do { let result = try doSomething() } catch { // Here you know about the error // Feel free to handle to re-throw } 或者只是尝试调用该函数,并将错误传递给调用链中的下一个调用者: func doSomeOtherThing() throws -> Void { // Not within a do-catch block. // Any errors will be re-thrown to callers. let result = try doSomething() } 尝试! 当你试图访问一个隐藏的解包可选的内部有一个nil会发生什么?是的,真的,应用程序会崩溃! let result = try! doSomething() // if an error was thrown,CRASH! 尝试? 一个在Xcode 7 beta 6中引入的新关键字。它返回一个可选的展开成功值,并通过返回nil来捕获错误。 if let result = try? doSomething() { // doSomething succeeded,and result is unwrapped. } else { // Ouch,doSomething() threw an error. } 或者我们可以使用新的awesome guard关键字: guard let result = try? doSomething() else { // Ouch,doSomething() threw an error. } // doSomething succeeded,and result is unwrapped. 最后一点要注意,通过使用try?请注意,您将丢弃发生的错误,因为它被翻译为零。使用try?当你更多地关注成功和失败,而不是为什么失败。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |