try-catch構文を抜け出すときに、必ず実行したい処理をfinallyブロックに書くことができます。
tyr-catch構文の後ろに続けてfinally節を書きます。例外が発生しても、しなくてもfinally
ブロックは実行されます。
// finally01.cs
using System;
class finally01
{
public static void Main()
{
try
{
Console.Write("何か数字を入力してください---");
string str = Console.ReadLine();
int x = Int32.Parse(str);
int y = x / 2;
Console.WriteLine("今入力した数字を2で割ると{0}です", y);
}
catch (Exception e)
{
Console.WriteLine("例外が発生しました");
Console.WriteLine(e.Message);
}
finally
{
Console.WriteLine("finallyです");
}
}
}
見てわかるように、「数字を入力してください」数字以外の文字を入力すると例外が発生します。言われたとおり、数字を入力するとその半分の値を出力します。
どちらの場合も「finallyです」という文字列が出力されます。
実行結果は、次のようになります。
数字を入力しなかったために、例外が発生しています。
例外が発生しても、「finallyです」という文字列は表示されます。
今度は、例外は発生していません。
「finallyです」という文字列は表示されます。
さて、このプログラムの場合最後の
Console.WriteLine("finallyです");
は、わざわざfinallyブロックに書かなくても結果は同じになります。ただ、プログラムの見通しをよくするという意味合いですね。
Update 12/Oct/2006 By Y.Kumei