-
swift - Error Handing #1 (Error Handing)swift 2021. 1. 13. 10:34
Error Handing
에러가 발생하면 프로그램이 강제 종료되지만 에러를 직접 Handing하면 프로그램 종료 없이 처리 할 수 있다.
에러는 크게 Comile Time Error와 Runtime Error로 구분한다.
Compile error는 보통 문법과 관련이 있다.
runtime error는 프로그램이 실행중일때 발생, 문법적인 에러가 아니더라도 디바이스의 상태나 리소스 때문일 수도 있다.
// err 프로토콜을 채용하면 err 형식이 되는데 보통 enum으로 선언한다. enum DataParsingError : Error { case invalidType case InvalidField case missingRequiredField(String) } // 일반 형식과 에러 형식의 차이점은 하나이다. // 에러 형식은 swift 에러 처리 시스템에 통합된다. // 이제 데이터 파싱에서 에러가 발생하면 새로운 에러 인스턴스를 생성하고 에러를 처리하는 코드로 전달 할 수 있다. // 에러는 전달받는 코드에서는 발생한 에러종류를 확인하고 에러를 처리한다. // 에러를 전달하는 것을 에러를 던진다는 것으로 표현한다. -> throw 키워드 // throw 뒤에는 err형식의 인스턴스가 위치한다. // throw문은 아무데서나 호출할 수 없고 코드 블록이 에러를 던질 수 있다고 선언되어 있어야 한다. // throwing func 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 } } // throw func을 호출할때는 try 문을 사용한다. // try : do문과 같이 쓴다 // try? : err가 발생할 경우 nil // try! : err가 발생할경우 runtime err try? parsing(data: [:]) // 에러를 처리하는 방법 // 1. do-catch statement // 2. try Expression + Optional Binding // 3. hand over : 전달받은 에러를 다른 코드 블록으로 다시 전달
'swift' 카테고리의 다른 글
swift - Error Handing #3 (Optional Try) (0) 2021.01.13 swift - Error Handing #2 (do-catch Statement) (0) 2021.01.13 swift - Generic #3 (Associated Types) (0) 2021.01.13 swift - Generic #2 (Generic Type) (0) 2021.01.13 swift - Generic #1 (Function, Constraints) (0) 2021.01.13