JavaA2Z

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

throw

日本語 投げる
英語 throw
ふりがな すろう
フリガナ スロウ

解説

例外を「投げる」ための予約語ステートメントの一種。
例外クラスインスタンスへの参照を受け取り、その例外を発生させることで、その例外が「投げられる」。
通常、例外は「投げられる」ものだが、プログラム上「何らかの問題が発生した」場合に、例外明示的投げるために使用する。
Java言語仕様上はreturnの強化版と言える。

参考サイト


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

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

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        try
        {
            // NullPointerExceptionを投げてみます。
            throw new NullPointerException();
        }
        catch( NullPointerException e )
        {
            // それを受け取ります。
            e.printStackTrace();
            // java.lang.NullPointerException
            //     at Sample.main(Sample.java:10)
        }

        try
        {
            // 自分で作った例外を投げてみます。
            throw new SampleException();
        }
        catch( SampleException e )
        {
            // それを受け取ります。
            e.printStackTrace();
            // SampleException
            //     at Sample.main(Sample.java:23)
        }

        try
        {
            // メソッドから投げてみます。
            Sample sample = new Sample();
            sample.nullPointerExceptionThrower();
        }
        catch( NullPointerException e )
        {
            // それを受け取ります。
            e.printStackTrace();
            // java.lang.NullPointerException
            //     at Sample.nullPointerExceptionThrower(Sample.java:73)
            //     at Sample.main(Sample.java:36)
        }

        // 例外ではないクラスは投げられません。
        // throw new Integer( 100 );
        // コンパイルエラー:
        // 型の不一致: Integer から Throwable には変換できません。

        // RuntimeExceptionクラスのサブクラスではない
        // 例外は、catchしないとコンパイルエラーになります。
        // throw new SampleException();
        // コンパイルエラー:
        // 処理されない例外の型 SampleException

        // RuntimeExceptionのサブクラスの例外は、
        // catchしくてもコンパイルエラーにはなりません。
        // NullPointerExceptionなんて受けきれないので
        // 当然ですが……。
        throw new NullPointerException();
        // java.lang.NullPointerException
        //     at Sample.main(Sample.java:61
        // Exception in thread "main" 
    }

    /**
    *   NullPointerExceptionを投げるメソッド。
    */
    private void nullPointerExceptionThrower()
    {
        // NullPointerExceptionを投げます。
        throw new NullPointerException();

        // throwは、その後の処理をすっ飛ばすため、
        // returnのようにもみなされます。
        // そのため、throwによって「明らかに行われない
        // 処理」がある場合にはコンパイルエラーになります。
        // System.out.println( "ここには来ねぇ。" );
        // コンパイルエラー:
        // 到達不能コード
    }
}

/**
*   自作の例外クラス。
*   Exceptionのサブクラスとすることで、自動的に
*   例外とみなされます。
*/
class SampleException extends Exception
{
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        try
        {
            // NullPointerExceptionを投げてみます。
            throw new NullPointerException();
        }
        catch( NullPointerException e )
        {
            // それを受け取ります。
            e.printStackTrace();
            // java.lang.NullPointerException
            //     at Sample.main(Sample.java:10)
        }

        try
        {
            // 自分で作った例外を投げてみます。
            throw new SampleException();
        }
        catch( SampleException e )
        {
            // それを受け取ります。
            e.printStackTrace();
            // SampleException
            //     at Sample.main(Sample.java:23)
        }

        try
        {
            // メソッドから投げてみます。
            Sample sample = new Sample();
            sample.nullPointerExceptionThrower();
        }
        catch( NullPointerException e )
        {
            // それを受け取ります。
            e.printStackTrace();
            // java.lang.NullPointerException
            //     at Sample.nullPointerExceptionThrower(Sample.java:73)
            //     at Sample.main(Sample.java:36)
        }

        // 例外ではないクラスは投げられません。
        // throw new Integer( 100 );
        // コンパイルエラー:
        // 型の不一致: Integer から Throwable には変換できません。

        // RuntimeExceptionクラスのサブクラスではない
        // 例外は、catchしないとコンパイルエラーになります。
        // throw new SampleException();
        // コンパイルエラー:
        // 処理されない例外の型 SampleException

        // RuntimeExceptionのサブクラスの例外は、
        // catchしくてもコンパイルエラーにはなりません。
        // NullPointerExceptionなんて受けきれないので
        // 当然ですが……。
        throw new NullPointerException();
        // java.lang.NullPointerException
        //     at Sample.main(Sample.java:61
        // Exception in thread "main" 
    }

    /**
    *   NullPointerExceptionを投げるメソッド。
    */
    private void nullPointerExceptionThrower()
    {
        // NullPointerExceptionを投げます。
        throw new NullPointerException();

        // throwは、その後の処理をすっ飛ばすため、
        // returnのようにもみなされます。
        // そのため、throwによって「明らかに行われない
        // 処理」がある場合にはコンパイルエラーになります。
        // System.out.println( "ここには来ねぇ。" );
        // コンパイルエラー:
        // 到達不能コード
    }
}

/**
*   自作の例外クラス。
*   Exceptionのサブクラスとすることで、自動的に
*   例外とみなされます。
*/
class SampleException extends Exception
{
}

この単語を含むページ

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

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

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