处理尝试和斯威夫特3
问题描述:
抛出斯威夫特3之前我用的是:处理尝试和斯威夫特3
guard let data = Data(contentsOf: url) else {
print("There was an error!)
return
}
但是我现在必须使用do
,try
和catch
。我不熟悉这个语法。我将如何复制这种行为?
答
这里的区别是Data(contentsOf: url)
不会返回一个Optional,它会抛出。
所以,你可以在你的副渔获,但没有guard
使用它:
do {
let data = try Data(contentsOf: url)
// do something with data
// if the call fails, the catch block is executed
} catch {
print(error.localizedDescription)
}
请注意,您仍然可以使用guard
与try?
代替try
但随后可能出现的错误信息被忽略。在这种情况下,您不需要Do-Catch块:
guard let data = try? Data(contentsOf: url) else {
print("There was an error!")
// return or break
}
// do something with data
感谢您的支持!第二个例子正是我要找的! – KexAri
@Moritz有没有办法将错误消息添加到else子句中? – eonist
@GitSync不是用'try?',不是。你需要Do-Try-Catch来获取错误信息。 – Moritz