2009年12月5日土曜日

最初はunchecked文でオーバーフロー例外を無視し、次にchecked文を利用し例外を補足して例外の原因の詳細情報を表示する。

using System;

class MainClass
{
    static void Main()
    {
        try
        {
            // byte型の最大値+11を代入
            uint a = byte.MaxValue + 10;
            byte b;
            // byte型の最大値(255)を表示
            Console.WriteLine("byte型の最大値:" + byte.MaxValue);
            /* uint型をbyte型に変換しオーバーフローさせつつも
             * unchekcedキーワードを使用し例外を無視する*/
            b = unchecked((byte)a);
            /* オーバーフローが無視されるので255を超えた分は
             * 0に戻って加算されるよって255+10=9 */
            Console.WriteLine("byte型:255+10=" + b);
            /* checkedキーワードを使用しオーバーフローの例外を
             * スローする */
            b = checked((byte)a);
            Console.WriteLine(b);
        }
        // オーバーフローの例外を捕捉
        catch (OverflowException error)
        {
            // 例外の原因の詳細情報を表示する
            Console.WriteLine(error.Message);
        }
        finally
        {
            Console.WriteLine("終了");
        }
    }
}

0 コメント:

コメントを投稿