Swift Do Try Catch行为

时间:2017-05-26 15:09:33

标签: swift try-catch

我正在处理一个我实现了do-try-catch子句的类。 基本上问题是"尝试"之后的代码。即使尝试失败也被执行了:

Do{
 try jsonparshing(mydata)
code....
}catch{
alert("error")
}

尝试后找到代码是否正确? 如果尝试失败,我不希望这段代码被执行。

1 个答案:

答案 0 :(得分:0)

以下是调试该行为的步骤:

(1)你的&#j; jsonparshing(mydata)'真的扔了? 表1.A你可以查看' jsonParsing(_:)'的类型。为throws关键字。

1.B。或者您可以尝试省略“{} {} {}'和'尝试'完全看看Xcode是否抱怨该函数抛出并应该使用try。

//顺便说一下。这是一个错字吗?也许' jsonParsing(myData)'更习惯。

(2)假设你过去登记入住(1)。即功能真的扔了。然后你可以替换你的' jsonParsing(_:)'一个模拟的只是为了说服自己Swift'做{}抓住{}'确实有效。您的代码中可能还有其他内容可能会导致意外行为。

enum SimpleError: Error {
    case userError(msg: String)
    case systemError(msg: String)
}

func alwaysThrow() throws  -> () {
    throw SimpleError.userError(msg: "I create error!")
}


do {
    print("before throw")   // printed 
    try alwaysThrow()
    print("after throw")    // not printed
} catch {
    print(error)        // print: "userError("I create error!")\n"
}

(3)此时,如果不是用户/程序员错误,那么请将注意力集中在' jsonParsing(_:)'因为罪魁祸首在哪里。