2009年12月5日土曜日

checked文をunchecked文にネスト(入れ子)する。これでオーバーフローをキャッチしたりしなかったりできる。

using System;

class MainClass
{
    static void Main()
    {
        try
        {
            int a = byte.MaxValue + 10;
            byte b;
            unchecked
            {
                // byte型に変換すると10オーバーフローする
                b = (byte)a;
                // 出力値:byte型:255+10=9
                Console.WriteLine("byte型:255+10=" + b);
                checked
                {
                    // オーバーフロー例外のスロー
                    b = (byte)a;
                    Console.WriteLine(b);
                }
            }
        }
        // オーバーフロー例外の捕捉
        catch (OverflowException error)
        {
            // 例外の原因に関する詳細情報を表示
            Console.WriteLine(error.Message);
        }
        finally
        {
            Console.WriteLine("終了");
        }
    }
}

0 コメント:

コメントを投稿