C# 的例外處理範例

基礎篇

C# 簡介

開發環境

變數與運算

流程控制

陣列

函數

物件

例外處理

函式庫篇

檔案處理

資料結構

正規表達式

Thread

應用篇

視窗程式

媒體影音

網路程式

遊戲程式

手機程式

資料庫

雲端運算

特殊功能

委派

擴展方法

序列化

LinQ

WPF

網路資源

教學影片

投影片

教學文章

軟體下載

考題解答

101習題

簡介

C# 支援例外處理機制,當有任何的例外錯誤發生時,程式會立刻中斷,然後跳出到外層。此時,如果有任何例外處理的程式 (try … catch) 位於外層,就會接到這個例外,並可以即時處理之。否則,該例外會一直被往外丟,假如都沒有被處理,則程式將被迫中斷,系統會自行輸出例外訊息。

程式範例 1

以下是一個會引發例外的程式,由於 a/b = 3/0 會導致嘗試以零除 (System.DivideByZeroException) 的例外,但這個例外又沒有被任何的 try … catch 段落所處理,因此整個程式會中斷並輸出錯誤訊息。

using System;

class Try1
{
    public static void Main(string[] args)
    {
        int a = 3, b = 0;
        Console.WriteLine("a/b=" + a/b);
    }
}
D:\myweb\teach\CSharpProgramming>csc Try1.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.1
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.

D:\myweb\teach\CSharpProgramming>Try1

未處理的例外狀況: System.DivideByZeroException: 嘗試以零除。
   於 Try1.Main(String[] args)

程式範例 2

要處理例外可以用 try…catch 語句,以下範例就利用 try { … } catch (DivideByZeroException ex) 捕捉了上述的除以零之例外,您可以在 catch 段落中進行例外處理後,再決定要如何繼續執行程式。(本範例中只單純的提示被除數不可為零)。

using System;

class Try2
{
    public static void Main(string[] args)
    {
        try
        {
         int a = 3, b = 0;
         Console.WriteLine("a/b=" + a / b);
        }
        catch (DivideByZeroException ex)
        {
         Console.WriteLine("被除數不可為 0 !\n"+ex);
        }
    }
}
D:\myweb\teach\CSharpProgramming>csc Try2.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.1
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.

D:\myweb\teach\CSharpProgramming>Try2
被除數不可為 0 !
System.DivideByZeroException: 嘗試以零除。
   於 Try2.Main(String[] args)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License