特殊な条件を満たせない場合に、コードの実行を続けることができないケースがあります。コードにアサーションを置くことで、コードの実行を停止し、空や不正な値の原因を調査(デバッグ)できるようになります。
アサーションによるデバッグ
アサーションは、ブール条件が true
であることを評価する実行時のチェックで、ある条件が true であると表明するものです。アサーション以降の処理を実行する前に、重要な条件が満たされているかを確認するためにアサーションを使用します。条件が true
と評価される場合には、通常どおりコードが実行されます。条件が false
と評価された場合には、コードの実行が停止し、アプリケーションが終了します。
アプリケーションを Xcode でビルドして実行する場合など、デバッグ環境で実行している間はアサーションが動作します。不正な状態となった場所を確認し、アサーションによって停止した時点でのアプリケーションの状態を調査することができます。また、アサーションは適切なデバッグメッセージを表示します。
Swift 標準ライブラリのグローバル関数 assert(_:_file:line:)
を呼び出してアサーションを記述します。true
または false
と評価される式と、false
のときに表示されるメッセージをこの関数に渡します。
let age = -3
assert(age >= 0, "A person's age cannot be less than zero")
// age が 0 以上でないため、アサーションが作動
この例では、age >= 0
が true
と評価される、つまり age
が負の値でない場合のみコードの実行が継続されます。この例のように age
の値がマイナスで、age >= 0
が false
と評価される場合は、アサーションが作動し、アプリケーションが終了します。
次の例のように、アサーションメッセージを省略することができます。
assert(age >= 0)
いつアサーションを使用するか
条件が false になる可能性がある場面でアサーションを使用しますが、コードの実行を継続させるためには true でなければなりません。アサーションによるチェックが適しているのは、以下のようなシナリオです。
- カスタム実装のサブスクリプトに整数インデックスが渡されるが、インデックス値が小さすぎる、または大きすぎる
- 関数に値が渡されるが、不正な値でタスクを遂行できない
- オプショナル値が現時点で
nil
だが、正常に実行するには後続のコードではnil
でない値が必要不可欠である
Subscripts および Functions についても確認してください。
Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.