-
swift - Error Handing #3 (Optional Try)swift 2021. 1. 13. 10:49
// 두 표현식은 에러를 Optinal 값으로 변경한다 그래서 보통 Optional Binding과 함께 사용한다. enum DataParsingError: Error { case invalidType case invalidField case missingRequiredField(String) } func parsing(data: [String: Any]) throws { guard let _ = data["name"] else { throw DataParsingError.missingRequiredField("name") } guard let _ = data["age"] as? Int else { throw DataParsingError.invalidType } // Parsing } // 파싱 데이터 함수는 값을 리턴하지 않기 때문에 wardCard pattern으로 값을 생략 if let _ = try? parsing(data: [:]) { print("success") } else { print("fail") } // do-catch do { try parsing(data: [:]) print("success") } catch { print("fail") } // Optional try를 사용할때 반드시 Optinal binding으로 해야하는 것은 아니다 // 그냥 함수만 호출하고 결과는 신경쓸 필요가 없다면 // 이렇게 함수만 작성해도 된다. try? parsing(data: [:]) // forced try // try! parsing(data: ["name":"stave", "age": 33]) // 에러를 다른 곳에 전달할 수 없다. // do-catch도 쓸 수 없다. : 에러 발생시 프로그램이 강제 종료되기 때문에 -> 가능하다면 사용하지 않는게 좋다 try! parsing(data: [ : ])
'swift' 카테고리의 다른 글
swift - Error Handing #3 (defer Statement) (0) 2021.01.13 swift - Error Handing #2 (do-catch Statement) (0) 2021.01.13 swift - Error Handing #1 (Error Handing) (0) 2021.01.13 swift - Generic #3 (Associated Types) (0) 2021.01.13 swift - Generic #2 (Generic Type) (0) 2021.01.13