C#では、try-catch-finally構文でcatchブロックを省略することが許されています。
catchブロックを省略すると例外が発生した場合どうなるのでしょうか。
例外が補足されないので、そのままプログラムが終了してしまうのでしょうか。
これは、論より証拠試してみるのが一番です。
// tryfinally01.cs
using System;
class tryfinally01
{
public static void Main()
{
int no;
Console.Write("整数値を入力してください--- ");
string strNo = Console.ReadLine();
try
{
no = Int32.Parse(strNo);
}
finally
{
Console.WriteLine("入力が終わりましたね");
}
Console.WriteLine("try-finallyを抜けました");
}
}
まずは、言われたとおり整数値を入力してみます。
finally節も、それ以降も全部実行されていますね。
次に、わざとに整数値以外を入力して例外を発生させます。
すると、第65章に出ているような、いやなダイアログボックスが出現します。
このダイアログを閉じると・・・
finally節の「入力が終わりましたね」は表示されますが、
「try-finallyを抜けました」は、表示されません。
例外を補足しないと、finally節は実行されますが、それ以降は実行されずに強制終了させられていることがわかります。
Update 13/Oct/2006 By Y.Kumei