error
-
Swift 오류처리 -3Programming/Swift(iOS) 2021. 4. 6. 13:10
Error처리를 한 군데에서 하면 중복된 코드를 방지할 수 있어 가독성을 높일 수 있습니다. Singleton - 'default' => swift에 default keyword가 지정되어 있어 quota로 다르다는것을 표시 - shared : private로 제한을 걸어 생성을 불가능하게 한다. struct ErrorHandler { static let `default` = ErrorHandler() func handle(_ error:Error) { print(error) } } 타입을 생성할 때, Data의 유효성을 미리 검증해 볼 수 있다면 이후의 오류 처리를 줄일 수 있습니다. 에러 원인이 2개 이상일 경우 오류 처리를 하는 것이 좋고, 단일이라면 Optional 처리를 하는것이 편리합니다. 1..
-
Swift 오류처리 - 3Programming/Swift(iOS) 2021. 4. 6. 11:22
Objective - C의 전통적인 에러 처리인 'NSError'를 이용한 방법입니다. NSError를 extension으로 구현 한 뒤에, 각 종 처리를 추가해주면 됩니다. enum ApiError: Error { case network(String) case client(String) case server } struct User { let login: String let company: String } extension ApiError { var nsError: NSError { return NSError(apiError: self) } } func getGithubUser(login: String) throws -> User { if login == "root" { // throw ApiError..
-
Swift 오류 처리 - 2Programming/Swift(iOS) 2021. 4. 6. 09:51
만약 데이터를 더하다가 오류가 났을때는 이미 추가된 데이터는 어떻게 해야될까요? 1, 이전 데이터로 돌린다. 2. 오류 이전까지만 추가한다. 개발자 혹은 기획이 어떻게 되냐에 다르겠지만, 대부분은 1번을 선택 할 것입니다. 오류 가능성이 있는 연산이 수행되었을 때, 오류가 발생하게 되면, 오류 발생 이전의 객체 상태로 오류 발생 이후의 상태는 동일해야 한다. => 예외 안정성 아래 코드는 append를 하다가 예외가 발생합니다. 과연 어떤 결과가 나올까요? enum LogError:Error { case invalidValue } struct Log { var values:[String] = [String]() mutating func append(messages:[String]) throws { for..
-
Swift 오류 처리 - 1Programming/Swift(iOS) 2021. 4. 6. 09:38
Swift에는 오류를 처리할 수 있는 방법들이 많이 있습니다. Error Protocol을 구현해주면 되는데요. 에러는 상호 베타적이기때문에, 한 에러가 발생하면 다른 에러는 발생하지 않아야합니다. -> Enum을 가지고 구현하면 편합니다. 추가적인 정보가 필요한 경우에는 struct나 class도 가능합니다. 에러에 대한 정보는 함수 위에 미리 넣어주는게 좋습니다. (Command + option + /) enum ParseLocationError:Error { case invalidData case network(String) case locationDoesNotExist } struct Location { let latitude:Double let longitude:Double } /// 유요한 위..