我正在处理一个我实现了do-try-catch子句的类。 基本上问题是"尝试"之后的代码。即使尝试失败也被执行了:
Do{
try jsonparshing(mydata)
code....
}catch{
alert("error")
}
尝试后找到代码是否正确? 如果尝试失败,我不希望这段代码被执行。
答案 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(_:)'因为罪魁祸首在哪里。