0
我正在处理一个我已经实现了do-try-catch子句的类。 基本问题是,经过“尝试”的代码,即使尝试失败得到了执行:Swift Do Try Catch行为
Do{
try jsonparshing(mydata)
code....
}catch{
alert("error")
}
是否正确定位代码尝试后? 如果尝试失败,我不希望此代码得到执行。
我正在处理一个我已经实现了do-try-catch子句的类。 基本问题是,经过“尝试”的代码,即使尝试失败得到了执行:Swift Do Try Catch行为
Do{
try jsonparshing(mydata)
code....
}catch{
alert("error")
}
是否正确定位代码尝试后? 如果尝试失败,我不希望此代码得到执行。
这里是我会做调试行为的步骤:
(1)贵 'jsonparshing(MYDATA)' 真摔?
1.a.你可以检查throws关键字的'jsonParsing(_ :)'的类型。
1.b.或者你可以尝试省略'do {} catch {}'和'try'以查看Xcode是否抱怨函数抛出并且应该使用try。
// btw。是一个错字?也许'jsonParsing(myData)'更加自定义。 (2)假设你过去登记(1)。即该功能真的扔了。然后你可以用模拟替换你的'jsonParsing(_ :)',只是为了说服你自己Swift的'do catch {}'确实有效。代码中可能有其他可能导致意外行为的其他内容。
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"
}
(三)在这一点上,如果它不是一个用户/编程错误,那么你的注意力集中在“jsonParsing(_ :)”,因为在这里的罪魁祸首是。
如果'try'失败,执行到'catch'。失败的'try'后面的代码没有被调用。 – rmaddy
如果方法失败,该方法真的会抛出一个错误吗? – vadian