【发布时间】:2017-10-21 17:57:08
【问题描述】:
在 C# 或 Java 中,通常解析数字字符串会引发格式异常。但是,下面的代码没有捕捉到错误。怎么了?
func getInt(_ data:String)->Int
{
do
{
return try Int(data)!
}
catch
{
return -1;
}
}
var a = "x123"
var b:Int = getInt(a)
print("Result: " + b)
【问题讨论】:
-
!== 强制解包 == "我希望如果值为 nil 则程序崩溃" -
“以下代码未捕获错误” 它还会产生两个编译器警告,强烈建议您做错了什么。奇怪的是,考虑到异常在其他地方的使用方式,这个初始化程序没有抛出。
-
为什么你希望
-1指示解析失败,而nil正是这样做的,没有被误解为的可能性"-1"的(成功)解析? -
正如我在另一条评论中所写,该方法不是真正的方法。在真实方法中,有效值永远不会是负数。