小遍在Swift学习开发中,遇到了一个错误
# !extra argument error in call
以前
经过查阅资料才知道,我们以前用`var error : NSError?`的方式来标识一个错误。当这个方法发生错误时,它会对` error` 对象进行赋值,我们便能获取错误的具体信息:
var e : NSError?
xs!.connectWithTimeout(5000, error: &e)
现在
Swift 2.0 加强了错误处理的安全性,引入了异常机制,使用 了throws 关键字来表示一个方法可能抛出错误,解决方式用 try catch
语法
解决方式为:
do {
// 这行可以顺利执行
try xs!.connectWithTimeout(5000)
// 执行不通会抛出一个错误
} catch let error as NSError{
print("连接失败\(error.domain)")
}
##注 ` NSError` 用 `let` 进行了类型转换,这其实主要是针对 Cocoa 现有的 API 的,是对历史的一种妥协。
对try catch
语法的理解(知道的伙伴可自动忽略)
首先要清楚,如果没有try的话,出现异常会导致程序崩溃。
而try则可以保证程序的正常运行下去,比如说:
try{
int i = 1/0;
}catch(Exception e){
........
}
#######一个计算的话,如果除数为0,则会报错,如果没有try的话,程序直接崩溃。用try的话,则可以让程序运行下去,并且输出为什么出错!