🕌

assert について

2023/07/08に公開

定義

func assert(
    _ condition: @autoclosure () -> Bool,
    _ message: @autoclosure () -> String = String(),
    file: StaticString = #file,
    line: UInt = #line
)

使用例

assert(condition, "Message")

condition はテストする条件(真または偽)を、"Message" は条件が偽の場合に表示するメッセージを表す。

デバッグ時に、条件を満たさないときプログラムをクラッシュさせ、メッセージをコンソールに表示する。

類似の関数との違い

assert

デバッグビルド時にのみチェックされる。
リリースビルドでは無視される。
開発中にチェックするのに適している。

precondition

デバッグビルドとリリースビルドでチェックされる。
重大なエラーをチェックするのに適している。

fatalError

常にチェックされる。
致命的なエラーでプログラムを続行不可の場合に使う。

メリット・デメリット

メリット

assert はデバッグ中に起こる問題の早期発見に役立つ。想定外の状態や条件が発生した時に、問題の原因追及を容易にする。

デメリット

assert はデバッグビルドでのみ動作するため、リリースビルドで発生する問題を見逃す。
重大なエラーに対しては、 precondition , fatalError などリリースビルドでも確実にチェックする関数が適している。

参考サイト

Discussion