Swift/swift 문법

에러 처리

Lyla. 2023. 3. 27. 21:21

함수에서 에러가 발생하는 경우 이를 알릴 수 있는 수단이 필요함. 

: 에러가 나올 수 있는 함수에는 표시하기로 함 (throws 키워드)

 

 

 

에러타입 정의 

enum Errors: Error {
	case errorMax
    	case errorMin
}

: 사전에 에러타입을 정의해주어야함.

 

func checkError(a:Int) throws -> Bool{
	//         	:throws 키워드로 에러를 던질 수 있음을 알림
    if a > 5 {
  	throw Errors.errormax
        //5 이상인 경우 에러타입 반환
    }
}

에러가 발생할 수 있는 함수 실행 방법



do {
	let result = try checkError(m:5)
	//try키워드 필수, 함수가 정상적으로 실행 된 경우에 result에 할당
} catch {
	//이곳에서 에러 처리
    print("에러가 발생했습니다.")
}

에러 발생 가능한 함수의 형태

Int throws -> Int

() throws -> ()

 

catch 블럭 처리법

//try
do {
	let result = try checkError(a:5)
} catch Errors.errorMax {
	//Errors.errorMax인 경우 실행
}

//try? : 에러 발생 시 nil 반환
let data = try? checkError(a:5)

//try! : 에러 발생 시 에러 발생(종료), 에러가 발생할 수 없는 경우에만 사용
let data = try! checkError(a:5)

rethrowing함수로 에러를 다시 던지기

에러를 던지는 throwing함수를 파라미터로 받는 경우, 내부에서 다시 에러 던지기 가능 

func errorfunc(callback: () throws -> Void) rethrows {
	//callback 함수가 에러를 던지는 경우
	try callback()
}

rethrows 키워드 사용