JavaA2Z

KAB-studio > プログラミング > JavaA2Z > assertとは

assert

日本語 断言
英語 assertion
ふりがな あさーと
フリガナ アサート

解説

アサーションうための予約語
予約語の1つ。
「assert 評価;」の形式で、「評価式」がfalseの場合にAssertionErrorクラス例外として投げられる
また「assert 評価:;」の形式で、「評価式」がfalseの場合にAssertionErrorクラス例外として投げられ、そのAssertionErrorクラスに「値」が渡される。

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 注:
        // アサーションはJ2SEのバージョンが1.4以降である必要があります。
        // また、実行時にVM引数に-eaを追加しなければアサーションは機能しません。
        // Eclipseの場合、メニューの「実行」-「デバッグ」の
        // 「起動構成の作成、管理、及び実行」ダイアログの「引き数」ページの
        // 「VM 引き数」に-eaを追記してください。

        // とりあえずassertを使ってみます。
        try
        {
            // assertを使います。
            // assertは、ifと違い、falseだと機能します。
            assert false;
        }
        catch( AssertionError e )
        {
            // 投げられたAssertionErrorを拾いました。
            e.printStackTrace();
            // java.lang.AssertionError
            //     at Sample.main(Sample.java:17)

            // AssertionErrorクラスは、Errorクラスのサブクラスです。
            // Errorクラスは「拾ってはいけない例外」なので、
            // 実際には拾わず、assertにfalseを渡さない、そういう
            // プログラムを組む必要があります。
        }

        // もうひとつのassertの使用例。
        try
        {
            // assertを使います。
            // 今度は、「:」を使い、その右側に値を渡します。
            assert false : 100;
        }
        catch( AssertionError e )
        {
            // 投げられたAssertionErrorを拾いました。
            e.printStackTrace();
            // java.lang.AssertionError: 100
            //     at Sample.main(Sample.java:38)

            // assertに渡した「100」という値が、スタックトレースに
            // 「100」として出力されています。
            // このように、assertに「:」を付けると、その
            // 右側の値がAssertionErrorクラスに渡されます。
            // 通常は、assertの原因が判るような文字列を渡します。
            // そうすればassertの原因が判りますし、コメントの代わり
            // にもなります。
        }

        // 一番標準的なassertの使用方法。
        // output()メソッドは「引数にnullを渡してはいけない」という
        // 仕様になっています。
        // そのため、本来であれば、下記のstringは、nullチェックを
        // 行い、nullでない場合にのみoutput()メソッドに渡すべきです。
        // assertは、そういう「関数の呼び出し元に、関数のルール(契約)
        // を守らせる」ために存在します。
        String string = null;
        output( string );
        // java.lang.AssertionError: 引数stringがnullです。
        //     at Sample.output(Sample.java:67)
        //     at Sample.main(Sample.java:58)
        // Exception in thread "main" 

        // assertが「契約を守らせるためにある」ため、assertから
        // 投げられるAssertionErrorクラスを拾ってはいけません。
        // プログラムは、必ず「assertが発生しないよう」に作る
        // 必要があります。
    }

    /**
    *   assertの一番基本的な使い方。
    *   @param string 出力する文字列。nullは不可。
    */
    private static void output( String string )
    {
        assert string != null : "引数stringがnullです。";
        // このように「本来はあってはいけない値」をチェックする
        // ために使用します。

        // 出力します。
        // このメソッドの実装です。
        System.out.println( string );
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 注:
        // アサーションはJ2SEのバージョンが1.4以降である必要があります。
        // また、実行時にVM引数に-eaを追加しなければアサーションは機能しません。
        // Eclipseの場合、メニューの「実行」-「デバッグ」の
        // 「起動構成の作成、管理、及び実行」ダイアログの「引き数」ページの
        // 「VM 引き数」に-eaを追記してください。

        // とりあえずassertを使ってみます。
        try
        {
            // assertを使います。
            // assertは、ifと違い、falseだと機能します。
            assert false;
        }
        catch( AssertionError e )
        {
            // 投げられたAssertionErrorを拾いました。
            e.printStackTrace();
            // java.lang.AssertionError
            //     at Sample.main(Sample.java:17)

            // AssertionErrorクラスは、Errorクラスのサブクラスです。
            // Errorクラスは「拾ってはいけない例外」なので、
            // 実際には拾わず、assertにfalseを渡さない、そういう
            // プログラムを組む必要があります。
        }

        // もうひとつのassertの使用例。
        try
        {
            // assertを使います。
            // 今度は、「:」を使い、その右側に値を渡します。
            assert false : 100;
        }
        catch( AssertionError e )
        {
            // 投げられたAssertionErrorを拾いました。
            e.printStackTrace();
            // java.lang.AssertionError: 100
            //     at Sample.main(Sample.java:38)

            // assertに渡した「100」という値が、スタックトレースに
            // 「100」として出力されています。
            // このように、assertに「:」を付けると、その
            // 右側の値がAssertionErrorクラスに渡されます。
            // 通常は、assertの原因が判るような文字列を渡します。
            // そうすればassertの原因が判りますし、コメントの代わり
            // にもなります。
        }

        // 一番標準的なassertの使用方法。
        // output()メソッドは「引数にnullを渡してはいけない」という
        // 仕様になっています。
        // そのため、本来であれば、下記のstringは、nullチェックを
        // 行い、nullでない場合にのみoutput()メソッドに渡すべきです。
        // assertは、そういう「関数の呼び出し元に、関数のルール(契約)
        // を守らせる」ために存在します。
        String string = null;
        output( string );
        // java.lang.AssertionError: 引数stringがnullです。
        //     at Sample.output(Sample.java:67)
        //     at Sample.main(Sample.java:58)
        // Exception in thread "main" 

        // assertが「契約を守らせるためにある」ため、assertから
        // 投げられるAssertionErrorクラスを拾ってはいけません。
        // プログラムは、必ず「assertが発生しないよう」に作る
        // 必要があります。
    }

    /**
    *   assertの一番基本的な使い方。
    *   @param string 出力する文字列。nullは不可。
    */
    private static void output( String string )
    {
        assert string != null : "引数stringがnullです。";
        // このように「本来はあってはいけない値」をチェックする
        // ために使用します。

        // 出力します。
        // このメソッドの実装です。
        System.out.println( string );
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/07/20
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。