Assertions

Assertions (어서션)

디버깅할 때 특정 조건이 정말 참인지 확인하고 싶은 순간이 있어요. F#의 assert 표현식이 바로 그런 확인을 도와주는 디버깅 기능인데요, 조건이 거짓이 되면 Debug 모드에서는 시스템 오류 대화 상자가 뜹니다. 지금이 코드를 점검하기 좋은 타이밍이라는 신호죠.

출처: https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/assertions

본문

assert 표현식은 주어진 식을 테스트하는 디버깅 기능이에요. Debug 모드에서 조건이 실패하면 시스템 오류 대화 상자가 생성됩니다.

Syntax (구문)

assert condition

Remarks (설명)

assert 표현식의 타입은 bool -> unit이에요.

assert 함수는 Debug.Assert로 해석됩니다. 즉 Debug.Assert를 직접 호출한 것과 동일한 동작을 보여줘요.

어서션 검사는 Debug 모드로 컴파일할 때만 활성화됩니다. 정확히 말하면 DEBUG 상수가 정의되어 있을 때만 동작해요. 프로젝트 시스템에서는 기본적으로 DEBUG 상수가 Debug 구성에서는 정의되지만 Release 구성에서는 정의되지 않습니다.

한 가지 주의할 점이 있어요. 어서션 실패 오류는 F# 예외 처리를 통해서는 잡을 수 없어요.

Example (예제)

다음 코드는 assert 표현식의 사용을 보여줍니다.

let subtractUnsigned (x : uint32) (y : uint32) =
    assert (x > y)
    let z = x - y
    z
// 이 코드는 어서션 실패를 일으키지 않습니다.
let result1 = subtractUnsigned 2u 1u
// 이 코드는 어서션 실패를 일으킵니다.
let result2 = subtractUnsigned 1u 2u

subtractUnsigned는 부호 없는 정수 두 개를 받아 빼는 함수인데요, assert (x > y)xy보다 큰지 먼저 확인해요. 2u 1u를 넘기면 조건이 참이라 문제없지만, 1u 2u처럼 x가 더 작은 값을 넘기면 어서션이 실패해서 오류 대화 상자가 뜨게 되죠. 실수가 어디서 나는지 미리 잡아내는 용도로 쓰면 편리해요.

더 알아보기 (Learn more)