HIT해

[Swift 기초문법 - 73] precondition 본문

Swift/Swift 기초문법

[Swift 기초문법 - 73] precondition

힛해 2024. 8. 28. 01:56
728x90

precondition란?

Swift에서 특정 조건이 반드시 참이어야 하는 상황에서 사용하는 함수다.

주로 디버깅과 안전한 코드 작성을 위해 사용되며, 프로그램이 예상하지 못한 상태로 진행되지 않도록 한다.

precondition은 런타임에 조건을 확인하고, 조건이 거짓일 경우 프로그램을 종료시키며, 주로 논리적 오류를 확인하는 데 사용된다.

 

 

precondition의 기본 개념

func precondition
(
_ condition: @autoclosure () -> Bool,
_ message: @autoclosure () -> String = "",
file: StaticString = #file, line: UInt = #line
)
  • condition : Bool 값을 반환하는 조건식, 이 조건이 false 일 경우 프로그램이 종료된다
  • message : 조건이 거짓일 경우 출력할 오류 메시지
  • file, line : 오류가 발생한 파일과 라인 번호를 자동으로 전달한다.

 

사용 예시

let age = -5
precondition(age >= 0, "Age cannot be negative")

// 이 코드는 "Age cannot be negative" 메시지를 출력하고 프로그램을 종료

 

 

precondition의 역할

  • 디버깅
  • 안전성
  • 런타임 확인 : 특정 조건이 반드시 참이어야 하는 중요한 시점에서 사용할 수 있다.

 

precondition과 다른 조건 함수들

1. assert

디버그 모드에서만 조건을 검사하고 조건이 거짓이면 프로그램을 종료한다.

릴리즈 모드에서는 무시된다.

assert(age >= 0, "Age cannot be negative")

 

2. preconditionFailure

명시적으로 조건이 실패했음을 알리고, 즉시 프로그램을 종료한다.

preconditionFailure("This code should never be executed")

 

3. fatalError

논리적으로 도달할 수 없는 코드 경로에 사용된다.

이 함수는 무조건 프로그램을 종료한다.

fatalError("Unreachable code")

 

4. assertionFailure

assert가 실패했을 때 호출 할 수 있으며, 디버그 모드에서만 작동한다.

assertionFailure("This code should never be executed in debug mode")

 

 

주의 사항

precondition은 릴리즈 모드에서도 실행되므로 적절하게 사용하는 것이 중요하다.

또한 실제 애플리케이션의 런타입에서도 실행되기 때문애 반드시 조건이 충족될 것이라고 확신할 수 있는 경우에만 사용해야한다.