错误"调用可以抛出,但未标记'尝试'并且未处理错误"

Rob*_*t S 2 error-handling xcode ios parse-platform swift

使用这段代码获取错误"调用可以抛出,但未标记为'try'且错误未得到处理"

我正在使用Xcode 7.1最新的beta和swift 2.0

func checkUserCredentials() -> Bool {
    PFUser.logInWithUsername(userName!, password: password!)

    if (PFUser.currentUser() != nil) {
        return true
    }
    return false
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Cha*_* A. 10

Swift 2.0引入了错误处理.该错误表明logInWithUsername:password:可能会抛出错误,您必须对该错误执行某些操作.您有以下几种选择之一:

将您的checkUserCredentials()功能标记为throws并将错误传播给调用者:

func checkUserCredentials() throws -> Bool {
    try PFUser.logInWithUsername(userName!, password: password!)

    if (PFUser.currentUser() != nil) {
        return true
    }
    return false
}
Run Code Online (Sandbox Code Playgroud)

使用do/ catch语法来捕获潜在的错误:

func checkUserCredentials() -> Bool {
    do {
        try PFUser.logInWithUsername(userName!, password: password!)
    }
    catch _ {
        // Error handling
    }

    if (PFUser.currentUser() != nil) {
        return true
    }
    return false
}
Run Code Online (Sandbox Code Playgroud)

try!如果抛出错误,请使用关键字来获取程序陷阱,这只适用于您知道函数在给定当前情况下永远不会抛出的事实 - 类似于使用!强制解包可选(似乎不太可能给出方法名称) :

func checkUserCredentials() -> Bool {
    try! PFUser.logInWithUsername(userName!, password: password!)

    if (PFUser.currentUser() != nil) {
        return true
    }
    return false
}
Run Code Online (Sandbox Code Playgroud)