How to handle error in swift when server is not av

2019-12-16 20:08发布

问题:

How to handle error for this server call when the server is not available or is down?

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)
    }
}

It returns an object, so when I store the result in response variable then say print(response.result) it prints the response string

Please help.

回答1:

You can handle it via fetching http status code 503. This means that server is not available.



回答2:

Try switching response.response?.statusCode. If the code is 503, the server is unavailable. Note that if there are any errors, statusCode might not be available, so handle any nils appropriately.



回答3:

I can't undertand what you are trying to do exactly, don’t know your entire code.

self.client is an object of what Class? What self.client.create method returns? URLResponse?

Anyway, you can try:

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

After your self.client.create method.