
皆さんこんにちは新米です。
今回はJavaで使われるアサーションについて記事ををまとめて見たよ!
アサーションとは?
アサーションとは、プログラマが前提としている条件をチェックし、プログラムの正しい動作
を保証する為の機能です。
例えば、、プログラマのA君が「ここの処理結果はtrueになる」ようにプログラムを書いても、実際に実行して見ない限り分かりません。
そこでアサーション機能を使用することで、trueにならなかった場合は、エラーを表示することができ、バグの検出に有効です。
どんな時に使われる?
プログラムにバグを残さない1つの手段として使われます。
プログラムのバグを見つける方法と覚えとけばOKです!
お客様にプログラムをリリースする段階では、AssertionErrorがスローされないレベルに達している必要があります。
実際に使ってみよう
アサーション機能を利用するには、assertキーワードを使用します。
① assert boolean 式;
② assert boolean 式 : メッセージ;
assertキーワードの後に記述するboolean式には、プログラム実行時にtrueになるべき式を記述します。(つまりfalseの場合はエラー)
下記の(例)では引数のnumが0より大きい値を受け取ることがプログラムの前提となっています。
もし実行時にnumが0未満だった場合、AssertionErrorが発生しメッセージを定義した場合はメッセージも表示されます。
例)構文②の場合 private void test(int num){ assert (num > 0) : "numの値は" + num; //testメソッドの処理 }
Boolean式の実行された結果、falseが返った場合「AssertionErrorオブジェクト」がJava実行環境よりスローされます。
アサーションを使用したファイルのコンパイルと実行
class Test{ private int test(int num){ assert (num > 0) : num + "不正な値です。"; return num * 100; } int method(int num){ return test(num); } } public class Main { public static void main(String[] args) { Test obj = new Test(); System.out.println(obj.method(10)); System.out.println(obj.method(-1)); } }
今回、numの値が0未満の場合”AssertionError“が起こります。
コンパイル時点アサーション機能は有効になっているが、実行時は無効になっている為
Javaコマンドの -eaオプションを使用し有効にします。
◇実行時にアサーションが無効な場合
通常どおりの実行となる。
××××××××>javac Main.java ××××××××>java Main 1000 -100
◇実行時にアサーションが有効な場合
falseの場合AssertionErrorが表示される。
××××××××>javac Main.java ××××××××>java -ea Main 1000 Exception in thread “main” java.lang.AssertionError: -1不正な値です。 at Test.check(Main.java:3) at Test.method(Main.java:7) at Test.main(Main.java:14)
まとめ
いかがだったでしょうか。
開発において、どうしてもバグは付き物です。。
そんなバグの見落としを避けるために、アサーションは私たちを助けてくれます。
実際にコードを書いて学んでいってください!

最後まで読んでくれてありがとうございました👍
コメント