📱 Mobile/🚀 Swift

[Swift] 오류 처리

exception_log 2021. 1. 29. 23:38

<!— 본 포스트는 "꼼꼼한 재은씨의 Swift : 문법편"을 공부하며 직접 정리한 포스트입니다. —>

 

🚀작성자의 Swift 정리 원본인 Notion 구경하기 -> www.notion.so/Swift-59150070adb0467ea11d4f69090dbb24

 

오류타입 정의하기

오류 타입으로 사용되는 열거형을 정의할 때는 반드시 Error라는 프로토콜을 구현해야 한다.

protocol Error {
	
}

오류 던지기

우리가 작성한 오류 타입 객체는 함수나 메소드를 실행하는 과정에서 필요에 따라 외부로 던져 실행 흐름을 옮겨버릴 수 있다. 이때 함수나 메소드는 오류 객체를 외부로 던질 수 있다는 것을 컴파일러에 알려주기 위해 정의 구문을 작성할 때 throws 키워드를 추가한다.

func canThrowErrors() throws -> String
func cannotThrwoErrors() -> String

throws 키워드가 없으면 오류 객체를 던질 수 없다. 

오류 객체 잡아내기

함수에서 던진 오류를 잡아낼 때는 다음 형식의 구문을 사용한다.

do {
	try <오류를 던질 수 있는 함수>
} catch <오류 타입1> {
	// 오류 타입1에 대한 대응
} catch <오류 타입2> {
	// 오류 타입 2에 대한 대응
} catch ../ 

do 구문은 오류가 발생하지 않는 상황에서 실행할 구문이 작성되는 영역이다. 정상적으로 처리되는 상황을 가정하고 do 구문 내부에 코드를 작성하면 된다. 컴파일러는 do 구문 내부에 작성된 순서대로 코드를 실행하다가 try 함수 호출에서 오류가 던져지면 이를 catch 구문으로 전달한다. catch 구문은 switch 구문에서의 case 처럼 오류 타입 각각을 지정하여 작성할 수 있다.

반응형

'📱 Mobile > 🚀 Swift' 카테고리의 다른 글

[Swift] 프로토콜  (0) 2021.01.29
[Swift] 열거형과 익스텐션  (0) 2021.01.28
[Swift] 구조체와 클래스 - (2)  (0) 2021.01.27
[Swift] 구조체와 클래스 - (1)  (0) 2021.01.26
[Swift] 함수 - (3)  (0) 2021.01.25