在
Swift 2.0,苹果推出了一种新的方式来处理错误(do-try-catch)。
几天前在Beta 6中引入了一个更新的关键字(试试?)。
此外,知道我可以使用try!
3个关键字之间有什么区别,以及何时使用每个?
几天前在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?当你更多地关注成功和失败,而不是为什么失败。
原文地址:https://www.jb51.cc/swift/320948.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。