으니의 개발로그

[Swift] 함수(6) - 종료되지 않는 함수 본문

Swift/책 정리

[Swift] 함수(6) - 종료되지 않는 함수

아잉으니야 2021. 1. 30. 21:09

[Swift] 함수(6) - 종료되지 않는 함수

이 글은 Swift 프로그래밍 책을 읽고 요약한 내용입니다.

 

 

종료되지 않는다는 의미는 정상적으로 끝나지 않는 함수라는 뜻이다. 이를 비반환 함수(Nonreturning function) 또는 비반환 메서드(Nonreturning function)라고 한다. 비반환 함수는 어디서든 호출이 가능하고 guard 구문의 else 블록에서도 호출할 수 있다. 비반환 메서드는 재정의는 할 수 있지만 비반환 타입이라는 것은 변경할 수 없다.

비반환 함수는 반환 타입을 Never 라고 명시해주면 된다.

 

func crashAndBurn() -> Never {
    fatalError("Something very, very bad happened")
}

crashAndBurn()  // 프로세스 종료 후 오류 보고

func someFunction(isAllIsWell: Bool) {
    guard isAllIsWell else {
        print("마을에 도둑이 들었습니다!")
        crashAndBurn()
    }
    print("All is well")
}

someFunction(isAllIsWell: true)
/* All is well */
someFunction(isAllIsWell: false)
/* 마을에 도둑이 들었습니다!
 Fatal error: Something very, very bad happened: file __lldb_expr_77/7.4 종료되지 않는 함수.playground, line 4
*/