共用方式為


錯誤和例外處理 (Visual C# Express)

更新:2007 年 11 月

當 C# 程式執行發生錯誤時,就會產生例外狀況。例外狀況會停止程式目前的流程,並且如果沒有執行任何動作,程式僅會停止執行。程式中的錯誤 (例如,數字除以零),或是某些未預期的輸入結果 (例如,使用者選取不存在的檔案) 會導致例外狀況。身為一個程式設計人員,您必須讓程式能夠處理這些問題且不會損毀而中止。

C# 提供幾個關鍵字 (try、catch 和 finally) 可以讓程式偵測和處理例外狀況,然後繼續執行。這些是非常有用的工具,可以讓應用程式更可靠。

Try 和 Catch

try 和 catch 關鍵字會同時使用。使用 try 包含可能產生例外狀況的程式碼區塊,然後使用 catch 包含如果發生例外狀況時就會執行的程式碼。在這個範例中,稍後就會攔截到計算所建立除以零的例外狀況。如果沒有 try 和 catch 區塊,這個程式就會失敗。

class ProgramTryCatch
{
    static void Main()
    {
        int x=0, y=0;

        try
        {
            x = 10 / y;
        }

        catch (System.DivideByZeroException)
        {
            System.Console.WriteLine("There was an attempt to divide by zero.");
        }
    }
}

良好的程式設計方式是指明 catch 程式碼偵測的例外狀況類型。每個 try 可以有多個 catch 陳述式,每個陳述式處理不同的例外狀況。

finally 區塊

不論是否發生例外狀況,一定會執行 finally 區塊中包含的程式碼。請使用 finally 區塊以確定會傳回資源:例如,確定已關閉檔案。

try
{
    // Code to try here.
}
catch (SomeSpecificException ex)
{
    // Code to handle exception here.
}
finally
{
    // Code to execute after try (and possibly catch) here.
}

使用例外處理

例外狀況並不一定表示程式中發生嚴重的問題。通常是離開不相關程式碼區段的好方法,或是方法失敗的信號。許多 .NET Framework 類別方法會建立例外狀況警告特定狀況。

您也可以使用 throw 關鍵字產生自己的例外狀況。例如:

class ProgramThrow
{
    static void DoWork(int x)
    {
        if (x > 5)
        {
            throw new System.ArgumentOutOfRangeException("X is too large");
        }
    }

    static void Main()
    {
        try
        {
            DoWork(10);
        }
        catch (System.ArgumentOutOfRangeException ex)
        {
            System.Console.WriteLine(ex.Message);
        }
    }
}

當您覺得有可能引發某些未預期的情形時,請在程式中使用例外狀況。例如,當處理使用者的輸入、讀取檔案或從網際網路存取資訊時。

請參閱

工作

HOW TO:攔截例外狀況 (Visual C#)

概念

C# 語言入門

參考

例外處理陳述式 (C# 參考)

throw (C# 參考)

try-catch (C# 參考)

try-finally (C# 參考)

try-catch-finally (C# 參考)