我正在尝试添加针对变量的try catch。没有尝试捕捉我这个错误:
致命错误:在解包变量Double的可选值时意外发现nil(label.text!)!
所以我想抓住上面的错误。我试过下面的
do{
let value = try Double(label.text!)!
print("value\(value)")
} catch{
print("hi")
}
但它仍然会出现同样的错误,我也看到了这个警告:
在无法访问的try和catch块中没有调用抛出函数...
这是在swift中使用try catch块的正确方法吗?
编辑:(不重复)如果我只是返回return Double(labelDisplay.text)
我得到编译错误value of option type String? not unwrapped, so I have to use
返回Double(labelDisplay.text!)!`这就是失败的地方。这就是我试图抓住它的原因。
另一个编辑:标签为@IBOutlet weak private var label: UILabel!
编辑:返回代码
var displayValue: Double{
get{
print(labelDisplay.text.dynamicType)
return Double(labelDisplay.text!)!
}
set{
labelDisplay.text! = String(newValue)
}
}
答案 0 :(得分:2)
从字符串中制作double不会抛出,所以你不会抓到任何东西,你应该
if let value = Double(label.text) {
//here it worked out
print("value \(value)")
} else {
//it failed
}
答案 1 :(得分:1)
我个人会使用if let,我相信这是你本来想要的。
if let value = Double(label.text!)!{
print("value\(value)")
}else{
print("hi")
}
请告诉我这是否符合您的要求,如果没有,我会很乐意以任何其他方式提供帮助!
更新:
if let value = Double(label.text!){
print("value\(value)")
}else{
print("hi")
}
这是正确的方法。注意:标签文本只是解包,而不是整个双。如果是label.text!是有效数字(“3.14159”)而不是文本(“hello”),则将打印该值。如果没有,else语句将捕获它。
更新2:
WORKING:
声明:
var displayValue: Double{
get{
return Double(label.text!)!
}
set{
displayLabel.text! = String(newValue)
}
}
功能:
if let value = Double(label.text!){
print("value\(value)")
displayLabel.text! = "\(displayValue)"
}else{
print("hi")
}
答案 2 :(得分:1)
Actually, it does exist a try-catch operation in Swift. In the official documentation at Apple's Website, explains that this should be done like:
do {
try expression
statements
} catch pattern 1 {
statements
} catch pattern 2 where condition {
statements
}
For example:
var vendingMachine = VendingMachine()
vendingMachine.coinsDeposited = 8
do {
try buyFavoriteSnack("Alice", vendingMachine: vendingMachine)
} catch VendingMachineError.InvalidSelection {
print("Invalid Selection.")
} catch VendingMachineError.OutOfStock {
print("Out of Stock.")
} catch VendingMachineError.InsufficientFunds(let coinsNeeded) {
print("Insufficient funds. Please insert an additional \(coinsNeeded) coins.")
}
The source of this can be found here: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html