Обработка ошибок в Swift — это механизм обработки ошибок или исключительных ситуаций, которые могут возникнуть в вашем коде. Это позволяет вам выявлять и реагировать на потенциальные проблемы контролируемым и предсказуемым образом, а не позволять им вызывать сбой вашей программы.
В Swift ошибки представлены значениями типов, соответствующих протоколу Error
. Когда функция сталкивается с ошибкой, она может выдать ошибку, используя оператор throw
. Затем ошибка может быть перехвачена и обработана окружающим оператором do-catch.
Свифт До-улов
В кратком руководстве/учебнике мы узнаем, как обрабатывать ошибки в Swift на простом примере.
Когда вы разрабатываете приложение для iOS, и ваш код сталкивается с ошибкой, он не может ее обработать, приложение просто вылетит, и пользователю придется начинать все сначала — этого никто не хочет.
Оператор do-catch
в Swift используется для обработки ошибок в вашем коде. Блок do
содержит код, который может вызвать ошибку, а блок catch
содержит код, который должен быть выполнен в случае возникновения ошибки.
Обычно, когда вы получаете данные из API и выполняете синтаксический анализ из JSON в объект Swift, вы хотите использовать do-catch
. В следующем примере мы создадим функцию, которая анализирует JSON в объект:
func getData(dataToParse: Data) { do { let parsedToObject = try JSONDecoder().decode(SomeObject.self, from: dataToParse) success(profiles) }catch { print("Error") } } }
Как видите, синтаксис прост:
do { //Code that might fail example parse json to object }catch{ //The error is catched and the app can continue }
Теперь это отличный пример того, где вы всегда хотите создать do-catch.
Но иногда вы создаете функцию, которая может дать сбой, и поэтому вы хотите выдать ошибку.
Swift throw error — обработка ошибок с помощью enum
В Swift вы можете использовать перечисления для определения пользовательских типов ошибок и сделать обработку ошибок более структурированной и выразительной. Перечисление можно использовать для определения набора случаев ошибок, которые может выдать функция.
Допустим, вы создаете функцию и хотите сгенерировать ошибку, вы можете сделать это за 3 простых шага — создать перечисление Error, создать функцию, которая выдает ошибку, и функцию, которая ее перехватывает.
Мы определим пользовательскую ошибку для сетевых запросов.
1. Создайте пользовательскую ошибку, соответствующую ошибке
Первое, что нам нужно сделать, это определить наш NetworkError
enum:
enum NetworkError: Error { case serverError(errorCode: Int) case invalidURL(url: String) }
serverError
: указывает, что сервер вернул ошибку, и включает код ошибки, возвращенный сервером.
2. Функция выдает ошибку
Теперь нам нужно использовать наш NetworkError, и мы будем делать вид, что создаем запрос API.
func executeRequest(url: String) throws -> Data { guard let url = URL(string: url) else { throw NetworkError.invalidURL(url: url) } let response = try getResponse(from: url) if response.errorCode < 200 && response > 299 { throw NetworkError.serverError(errorCode: response.errorCode) } return response }
Приведенный выше код выдает NetworkError.invalidURL, если URL-адрес, переданный функции, не соответствует URL-адресу, и NetworkError.serverError, если код состояния ответа не был успешным — ниже 200 и выше 299.
3. Функция, которая ловит NetworkError
Теперь пришло время создать функцию, которая использует executeRequest и перехватывает ошибки:
do { let data = try executeRequest() // handle the received data } catch let error as NetworkError { // handle the specific NetworkError cases switch error { case .invalidURL(let invalidUrl): print("Not a valid URL: \(invalidUrl)") case .serverError(let errorCode): print("Server said no: \(errorCode)") } } catch { print("Any other error: \(error)") }
Заключение
В заключение можно сказать, что обработка ошибок является критически важной практикой в программировании на Swift, которая может улучшить качество и надежность кода.
Эффективно обрабатывая ошибки, разработчики могут предотвратить неожиданные и потенциально катастрофические сбои или ошибки, которые могут негативно повлиять на работу пользователей.
Использование обработки ошибок в Swift может помочь обнаруживать ошибки и реагировать на них более контролируемым и предсказуемым образом, обеспечивая более надежный код и лучшую стабильность приложения.
Кроме того, включив в Swift обработку ошибок, разработчики могут предоставить пользователям более качественную обратную связь, позволяя им понять, что пошло не так, и предпринять корректирующие действия. Это может улучшить общее взаимодействие с пользователем и уменьшить количество запросов в службу поддержки или отрицательных отзывов.
Что такое обработка ошибок в Swift?
Обработка ошибок — это механизм в Swift, который позволяет вам обрабатывать непредвиденные или нежелательные ситуации в вашем коде, такие как сетевые ошибки, ошибки файлового ввода-вывода или отсутствующие данные. Обработка ошибок помогает писать устойчивый и надежный код, позволяя предвидеть ошибки и реагировать на них.
В Swift обработка ошибок основана на концепции генерации и перехвата ошибок. Когда функция сталкивается с ошибкой, она выдает ошибку, и вызывающая функция может перехватить эту ошибку и отреагировать соответствующим образом.
Как вы выдаете ошибку в Swift?
Вы можете выдать ошибку в Swift, используя оператор throw
. Оператор throw
используется для указания того, что произошла ошибка, и для передачи ошибки вызывающей стороне функции.
Первоначально опубликовано на https://softwareanders.com 13 марта 2023 г.