我正在尝试为以下行添加例外:
let someData Int = Int(anArray[0])!
我想要异常,如果它是一个字符串而不是整数,它会忽略它。
我是swift的新手,但是在python中我可以做以下事情:
try:
let someData Int = Int(anArray[0])!
except:
pass
我尝试了以下内容:
guard let someData Int = Int(anArray[0])! else {
print("error")
}
,
let someData Int = try! Int(anArray[0])!
我正在使用swift 3
答案 0 :(得分:1)
你错过了正确的解决方案:
if let someData = Int(anArray[0]) {
// someData is a valid Int
}
或者您可以使用guard
:
guard let someData = Int(anArray[0]) else {
return // not valid
}
// Use someData here
请注意完全没有使用!
。除非你知道它不会失败,否则不要强制解包选项。
答案 1 :(得分:1)
在Swift中,try-catch块看起来像这样:
do {
//call a throwable function, such as
try JSONSerialization.data(withJSONObject: data)
} catch {
//handle error
}
但是,您只能从 throwable 函数中捕获错误,这些函数在文档中始终标有 throws 关键字。 try关键字只能用于throwable函数,而do-catch块只有在do块中使用try关键字时才有效。
您无法捕获其他类型的异常,例如您试图捕获的强制转换/展开异常。
正确处理可选值的方法如果使用可选绑定。
guard let someData = Int(anArray[0]) else {
print("error")
return //bear in mind that the else of a guard statement has to exit the scope
}
如果您不想退出范围:
if let someData = Int(anArray[0]) {
//use the integer
} else {
//not an integer, handle the issue gracefully
}