首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 除錯技巧與異常處理全攻略

     編輯:關於C#

為什麼需要除錯與異常處理?

即使資深工程師也會寫出 Bug。優秀的開發者擅長發現並修復錯誤;當錯誤隱晦難查時,就需要透過除錯器逐步追蹤程式執行流程。C# 提供強大的 Visual Studio 除錯工具與結構化異常處理機制,助您構建健壯的應用程式。

一、Visual Studio 除錯實務

除錯模式與符號檔

在除錯模式下執行程式時,VS 會記錄每行程式碼的執行資訊,儲存在 Debug 目錄下的 .pdb 符號檔中,支援斷點、變數監看、呼叫堆疊等功能。

輸出診斷資訊

在執行期間向「輸出」視窗寫入訊息,常用兩個方法:

  • Debug.WriteLine():僅在除錯建置有效。
  • Trace.WriteLine():除錯與發布建置皆有效。

需引用命名空間:using System.Diagnostics;

程式碼範例:尋找陣列最大值並輸出除錯資訊

static int MaxNum(int[] a)
{
    Debug.WriteLine("sort array begin");
    int max = a[0];
    int index = 0;

    for (int i = 1; i < a.Length; i++)
    {
        if (max < a[i])
        {
            max = a[i];
            index = i; // 可在此設定斷點觀察變化
        }
    }

    Trace.Write("the index of the biggest number is " + index);
    return max;
}

斷點設定示意圖

一般開發者只需確保程式正常執行,無需深究除錯器內部運作;專研執行機制的專家才會深入探討。

二、結構化異常處理

程式執行時可能發生異常(如檔案不存在、除以零),若不處理會導致程式中止。C# 使用 try-catch-finally 區塊捕獲並處理異常,確保程式穩定運行。

基本語法

try
{
    // 可能拋出異常的程式碼
}
catch (Exception ex)
{
    // 異常處理邏輯
}
finally
{
    // 無論是否發生異常都會執行的清理程式碼
}

常見異常類型速查表

異常類型說明
DivideByZeroException被零除
NullReferenceException參考空物件
IndexOutOfRangeException索引超出範圍
FormatException格式錯誤(如字串轉數字失敗)
FileNotFoundException找不到檔案
ArgumentException / ArgumentNullException引數錯誤或為 null
InvalidCastException型別轉換失敗
OutOfMemoryException記憶體不足
StackOverflowException堆疊溢位(遞迴過深)

實戰範例:處理除以零異常

int x1 = 40, x2 = 0, x3;
try
{
    x3 = x1 / x2; // 拋出 DivideByZeroException
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("錯誤:不能除以零 - " + ex.Message);
}
catch (Exception ex)
{
    Console.WriteLine("其他錯誤:" + ex.Message);
}
finally
{
    Console.WriteLine("finally 區塊一定會執行");
}

未處理除以零異常的錯誤畫面

執行流程說明:try 區塊嘗試執行風險程式碼;若發生異常,catch 依型別比對處理;finally 無條件執行,常用於資源釋放。可撰寫多個 catch 處理不同異常型別。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved