JavaA2Z

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

finally

日本語 最後に
英語 finally
ふりがな ふぁいなりぃ
フリガナ ファイナリィ

解説

必ずわなければならない処理を実するための予約語
try後のブロック内で処理がわれたあと、続いてfinallyがあれば、必ず直後のブロック内の処理が実される。
 
try{ なんかの処理 }finally{ 絶対にう処理 }」という構文で、tryの中の「なんかの処理」の中で、たとえ例外投げられる場合でも、returnメソッドから抜ける場合でも、もちろん何もなくても、必ず「絶対にう処理」がわれる。
Javaクラスには、ガベージコレクションによる「いつか消える」という曖昧な後処理がポリシーであり、C++言語が持つデストラクタのようなものが存在しないため、ファイル処理やネットワーク処理で不可欠な「後処理」をし忘れやすい。これら、必ず必要な後処理をfinally内でって必ずうようにするのがいいだろう。

参考サイト


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

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

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 最も基本的だが、最もマイナーな例。
        try
        {
            System.out.println( "try(0)" );
        }
        finally
        {
            // finally内は、何があっても処理されます。
            System.out.println( "finally(0)" );
        }
        // try(0)
        // finally(0)

        // 例外の後に使う例。
        try
        {
            System.out.println( "try(1)" );
            // NullPointerExceptionを投げます。
            throw new NullPointerException();
        }
        catch( NullPointerException e )
        {
            e.printStackTrace();
        }
        finally
        {
            // 例外が投げられた後、ここを通ります。
            System.out.println( "finally(1)" );
        }
        // try(1)
        // java.lang.NullPointerException
        //     at Sample.main(Sample.java:24)
        // finally(1)

        try
        {
            // 例外が拾われなくても通ります。
            try
            {
                System.out.println( "try(2)" );
                // NullPointerExceptionを投げます。
                throw new NullPointerException();
            }
            finally
            {
                // 例外が拾われなくてもここには来ます。
                System.out.println( "finally(2)" );
            }
        }
        catch( NullPointerException e )
        {
            // 後の例で困るのでここで例外を拾っておきます。
            e.printStackTrace();
        }
        // try(2)
        // finally(2)
        // java.lang.NullPointerException
        //     at Sample.main(Sample.java:47)

        // returnで返ってもここに来ます。
        try
        {
            System.out.println( "try(3)" );
            return;
        }
        finally
        {
            // returnで抜けてもここに来ます。
            System.out.println( "finally(3)" );
        }
        // try(3)
        // finally(3)
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 最も基本的だが、最もマイナーな例。
        try
        {
            System.out.println( "try(0)" );
        }
        finally
        {
            // finally内は、何があっても処理されます。
            System.out.println( "finally(0)" );
        }
        // try(0)
        // finally(0)

        // 例外の後に使う例。
        try
        {
            System.out.println( "try(1)" );
            // NullPointerExceptionを投げます。
            throw new NullPointerException();
        }
        catch( NullPointerException e )
        {
            e.printStackTrace();
        }
        finally
        {
            // 例外が投げられた後、ここを通ります。
            System.out.println( "finally(1)" );
        }
        // try(1)
        // java.lang.NullPointerException
        //     at Sample.main(Sample.java:24)
        // finally(1)

        try
        {
            // 例外が拾われなくても通ります。
            try
            {
                System.out.println( "try(2)" );
                // NullPointerExceptionを投げます。
                throw new NullPointerException();
            }
            finally
            {
                // 例外が拾われなくてもここには来ます。
                System.out.println( "finally(2)" );
            }
        }
        catch( NullPointerException e )
        {
            // 後の例で困るのでここで例外を拾っておきます。
            e.printStackTrace();
        }
        // try(2)
        // finally(2)
        // java.lang.NullPointerException
        //     at Sample.main(Sample.java:47)

        // returnで返ってもここに来ます。
        try
        {
            System.out.println( "try(3)" );
            return;
        }
        finally
        {
            // returnで抜けてもここに来ます。
            System.out.println( "finally(3)" );
        }
        // try(3)
        // finally(3)
    }
}

この単語を含むページ

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

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

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