checked” 關鍵字是用來檢查整數類資料型別(Integral Type)進行算術運算或轉換時的溢位檢查。在一般情況下,並不會檢查數值是否發生 overfolw,若希望在執行階段判斷是否產生 overfolw 則可使用 “checked” 關鍵字。

如下列程式碼,執行並不會發生任何的錯誤,而是直接 overfolw 變成負數:

static void Main(string[] args)
{
    // int.MaxValue equals 2147483647
    int n = int.MaxValue;
    n = n + 1;
    System.Console.WriteLine(n);
}

輸出結果:

-2147483648

使用 “checked”

static void Main(string[] args)
{
    checked
    {
        // int.MaxValue equals 2147483647
        int n = int.MaxValue;
        n = n + 1;
        System.Console.WriteLine(n);
    }
}

發生 overflow,跳出 exception 視窗


補上 try catch

class Program
{
    static void Main(string[] args)
    {
        try
        {
            checked
            {
                // int.MaxValue equals 2147483647
                int n = int.MaxValue;
                n = n + 1;
                System.Console.WriteLine(n);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

輸出結果:

數學運算導致溢位。