我有这个函数来处理API调用(makeAPICall
),我想为某些API响应和httpResponse.statusCode != 200
时抛出错误。
问题是,据我所知,NSURLSession().dataTaskWithRequest(...)
不能抛出。这是正确的,如果是的话,是否有一些解决方法?或者我应该做一些完全不同的事情?
答案 0 :(得分:1)
由于dataTaskWithRequest是一个异步操作,因此使用完成处理程序可以简化其错误处理。如果要抛出,则在操作完成时很难处理错误。
因此,您应该在完成处理程序中处理错误条件。如果你想在完成时抛出自己的错误,那么这是可能的,但有点多余。
答案 1 :(得分:1)
不是抛出错误,而是让客户端传入一个块,并在请求失败时(或者就此而言,当成功完成时)运行该块。
答案 2 :(得分:0)
实际上,如果发生错误,您可以处理错误。例如
let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
if let error = error {
print(error)
// do whatever you want, there is an error
}
if let data = data{
print("data =\(data)")
}
if let response = response {
print("url = \(response.URL!)")
print("response = \(response)")
let httpResponse = response as! NSHTTPURLResponse
print("response code = \(httpResponse.statusCode)")
}
})
我向您展示了如何获取响应代码。