我在Swift 1.2中经常使用这种方法:NSURLConnection.sendSynchronousRequest(:_:_:_)
,但这在iOS9中显然是不赞成的。它仍然工作,但现在它使用新的Swift 2.0错误处理,我不知道我将如何获得错误消息,如果它失败,例如,如果时间用完。
我知道我必须把它放到一个做捕捉,然后说尝试之前的方法,但我不知道如何捕捉错误信息。
do {
let data = try NSURLConnection.sendSynchronousRequest(request, returningResponse: nil)
return data
}
catch _ {
return nil
}
之前我用了NSError,然后用了它的description属性,但是现在我一点头绪都没有。
4条答案
按热度按时间qzlgjiam1#
使用自动
error
变量,如果愿意,可以将其转换为NSError
:inb24sb22#
现在可以抛出继承
ErrorType
的任何对象,并在catch
语句中提供自定义处理。还可以将错误转换为NSError
以访问localizedDescription
来处理第三方错误。转换枚举
ErrorType
将产生NSError
,其中domain
相等枚举名称、code
相等枚举值,以及自动产生的localizedDescription
,其格式如下:无法完成该操作。(域错误代码。)
例如,下列程式码:
将打印
无法完成操作。(AwfulError错误1。)
xoshrz7s3#
尽管问题标题指定了Swift 2,但此答案适用于Swift 3。
正如@redent84所指出的,从Swift 2开始,Error对象可能是一个自制的对象。下面是我编写的一个方法,用来分析和打印“catch”语句中的默认错误对象,该语句没有指定任何特定的错误类型:
那么你可以这样称呼它:
mm5n2pyu4#
如何获取userInfo中的错误消息: