C#快速入門教程(18)—— 異常處理

曹化宇發表於2018-10-14

一般情況下,人們總是想像程式碼能夠和自己想的一樣正確執行,但由於各種原因,實際執行時還是會出現各種各樣的問題;在C#程式碼中,我們可以異常(exception)捕捉機制進行處理,並對不同的異常情況做出合理的處理。

C#中的異常處理使用了try...catch...finally語句結構,其基本語法如下。

try
{
    <語句塊1>
}
catch (Exception ex)
{
    <語句塊2>
}
catch
{
    <語句塊3>
}
finally
{
    <語句塊4>
}

在這個結構中,<語句塊1>是軟體的業務程式碼,但可能會出現問題,此時,可以使用一系列的catch語句塊進行捕捉,catch關鍵字後如果使用一對圓括號定義了異常型別,就可以精確的捕捉到此型別的異常,從而進行相應的處理;如果無法確定異常型別,可以使用Exception物件獲取異常資訊,以便進一步處理;如果不需要獲取異常資訊,可以直接使用catch語句進行相應的處理,請注意,不指定異常型別的catch語句只能有一個,而且只能出現在所有有異常型別的catch後面;最終,無論<語句塊1>是否出現異常,都會執行finally語句塊中的內容。整個try的基本執行邏輯如下圖所示。

enter image description here

接下來,我們就來看幾種try...catch...finally語句結構的變形和具體應用。

下面的程式碼,我們看一看如何捕捉異常並顯示其提示資訊。

static void Main(string[] args)
{
        try
        {
            int x = 10;
            int y = 0;
            Console.WriteLine(x / y);
        }
        catch(Exception ex)
        {
            Console.Write("出現異常:");
            Console.WriteLine(ex.Message);
        }
}

程式碼執行結果如下圖所示。

enter image description here

下面的程式碼演示了finally語句塊的使用。

static void Main(string[] args)
{
        try
        {
            int x = 10;
            int y = 0;
            Console.WriteLine(x / y);
            Console.WriteLine("正確執行");
        }
        catch
        {
            Console.WriteLine("出現異常");
        }
        finally
        {
            Console.WriteLine("結束");
        }
}

程式碼執行結果如下圖所示。

enter image description here

大家可以修改y的值來觀察執行結果。

專案開發中,可以根據需要統一處理異常並做記錄,這樣就可以在使用過程中有效跟蹤常見錯誤,並對軟體做出相應的修改;比如,在上一課中使用CLog類就可以根據需要進行修改,以適合的方式記錄軟體執行過程中的錯誤,並做分析、改進等工作。

CHY軟體小屋原創作品!

相關文章