服务器不可用时如何迅速处理错误?

时间:2019-05-08 14:24:32

标签: swift protocol-buffers grpc

当服务器不可用或已关闭时,如何处理此服务器调用的错误?

func createData(request:Crudpb_CreateRequest, with completion: @escaping (String) -> Void) throws {
    DispatchQueue.main.async {
        self.response = try! self.client.create(request) // <---- How to handle error for this server call when the server is not available or is down?
        completion(self.response.result)
    }
}

它返回一个对象,所以当我将结果存储在响应变量中然后说出print(response.result)时,它将打印响应字符串

请帮助。

3 个答案:

答案 0 :(得分:0)

您可以通过获取http状态代码503来处理它。这意味着服务器不可用。

答案 1 :(得分:0)

尝试切换response.response?.statusCode。如果代码是503,则服务器不可用。请注意,如果有任何错误,statusCode可能不可用,所以请适当处理任何nil

答案 2 :(得分:0)

我无法理解您到底想做什么,也不知道您的全部代码。

self.client是什么类的对象?什么self.client.create方法返回? URLResponse?

无论如何,您可以尝试:

if let response = self.response as? HTTPURLResponse{
    if response.statusCode == 503{
        //server not available
    }
}

在您的self.client.create方法之后。