[C#] 使用try-catch捕捉與處理錯誤

更新於 發佈於 閱讀時間約 6 分鐘

在程式設計中,錯誤處理是一個不可或缺的部分。C#提供了強大的錯誤處理機制,讓我們能夠更有效地管理和處理程式執行中可能出現的問題。本篇文章將帶你深入了解如何在C#中捕捉與處理錯誤,確保你的程式在遇到問題時能夠優雅地回應。

使用try-catch語句

在C#中,我們使用try-catch語句來捕捉和處理錯誤。try區塊內包含可能會拋出例外的程式碼,而catch區塊則定義了處理特定例外的程式碼。讓我們透過一個範例來了解如何使用try-catch:

using System;

class Program
{
static void Main()
{
try
{
// 可能會拋出例外的程式碼
int numerator = 10;
int denominator = 0;
int result = numerator / denominator;

Console.WriteLine("結果: " + result);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("捕捉到除以零的錯誤: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("捕捉到其他錯誤: " + ex.Message);
}
finally
{
Console.WriteLine("不論是否有錯誤,這個區塊都會執行。");
}

Console.WriteLine("程式繼續執行。");
}
}

在這個範例中,我們使用了try-catch語句來捕捉可能拋出的除以零的錯誤。如果發生這樣的錯誤,程式就會進入相對應的catch區塊。最後,不論是否有錯誤,finally區塊都會執行。

多個catch區塊

我們可以根據需要在try-catch語句中使用多個catch區塊。每個catch區塊可以捕捉不同類型的例外,這樣可以更精確地處理錯誤情況。以下是一個範例:

using System;

class Program
{
static void Main()
{
try
{
int[] numbers = { 1, 2, 3 };
Console.WriteLine(numbers[5]); // 這會拋出IndexOutOfRangeException
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("捕捉到索引超出範圍的錯誤: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("捕捉到其他錯誤: " + ex.Message);
}
}
}

在這個範例中,我們捕捉了IndexOutOfRangeException以及一般的Exception。藉由這種方式,我們能夠根據不同的錯誤情況提供更具體的處理方式。

使用finally區塊

除了try和catch,我們還可以使用finally區塊。finally區塊中的程式碼將在try-catch語句執行完畢後無論是否有錯誤都會執行。這是一個很好的地方來釋放資源或進行清理工作。以下是一個範例:

using System;

class Program
{
static void Main()
{
try
{
// 一些可能拋出例外的程式碼
}
catch (Exception ex)
{
// 處理錯誤
}
finally
{
// 執行清理工作
}
}
}

自訂例外

除了捕捉系統定義的例外,我們還可以建立自訂例外,以便更好地表達特定的錯誤情況。以下是建立自訂例外的範例:

using System;

class MyCustomException : Exception
{
public MyCustomException(string message) : base(message)
{
}
}

class Program
{
static void Main()
{
try
{
throw new MyCustomException("這是一個自訂的例外。");
}
catch (MyCustomException ex)
{
Console.WriteLine("捕捉到自訂例外: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("捕捉到其他錯誤: " + ex.Message);
}
}
}


在C#中,使用try-catch語句能夠幫助我們更好地捕捉、處理和回應程式執行中可能出現的錯誤。透過適當的錯誤處理機制,我們能夠提升程式的穩定性和可靠性,讓使用者有更好的使用體驗。記住根據不同情況使用不同的catch區塊,並在finally區塊進行必要的清理工作,這將有助於你建立更優質的程式。

留言
avatar-img
留言分享你的想法!
avatar-img
程式輕鬆玩
73會員
182內容數
這裡將以輕鬆風格,深入探討程式設計的基礎和高級概念。從程式語言到演算法,我們將以易懂的方式解釋每個主題,讓你輕鬆掌握。無論你是初學者或有經驗者,都能在這裡找到適合你的內容。無論你的目標是成為專業開發者還是擴展知識,我們都會陪伴你一同成長!
程式輕鬆玩的其他內容
2024/02/04
在開發 Windows 應用程式時,有時會需要讓使用者能夠進行圖片的複製與貼上操作。這篇教學將會介紹如何在 C# 中實現這樣的功能。我們將使用 System.Drawing 命名空間中的一些類別來處理圖片的複製和貼上操作。
Thumbnail
2024/02/04
在開發 Windows 應用程式時,有時會需要讓使用者能夠進行圖片的複製與貼上操作。這篇教學將會介紹如何在 C# 中實現這樣的功能。我們將使用 System.Drawing 命名空間中的一些類別來處理圖片的複製和貼上操作。
Thumbnail
2024/02/04
在本教學中,我們將介紹如何使用C#語言以及HtmlAgilityPack套件來爬取台灣證券交易所網站上特定股票的股價資料。
Thumbnail
2024/02/04
在本教學中,我們將介紹如何使用C#語言以及HtmlAgilityPack套件來爬取台灣證券交易所網站上特定股票的股價資料。
Thumbnail
2024/02/04
在程式設計中,我們經常會遇到需要重複執行某段程式碼的情況,例如列印星期幾、處理資料、或者檢查使用者輸入。為了有效地處理這類任務,我們可以使用迴圈。在 C# 中,最常見的迴圈包括 for 迴圈和 while 迴圈。本文將介紹這兩種迴圈的基本語法和應用場景。
Thumbnail
2024/02/04
在程式設計中,我們經常會遇到需要重複執行某段程式碼的情況,例如列印星期幾、處理資料、或者檢查使用者輸入。為了有效地處理這類任務,我們可以使用迴圈。在 C# 中,最常見的迴圈包括 for 迴圈和 while 迴圈。本文將介紹這兩種迴圈的基本語法和應用場景。
Thumbnail
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
題目:建立一個傳回值乘以 50 並增加 6 的函數。如果輸入的值是字串,則應傳回「Error」。
Thumbnail
題目:建立一個傳回值乘以 50 並增加 6 的函數。如果輸入的值是字串,則應傳回「Error」。
Thumbnail
當您看到這樣的訊息時: TypeError: exceptions must derive from BaseException 可能會很困惑究竟是什麼原因導致這樣的錯誤發生, 那本章節將會告訴您以下: 怎麼發生的? 怎麼解決? 我們應該用Exception或BaseException嗎
Thumbnail
當您看到這樣的訊息時: TypeError: exceptions must derive from BaseException 可能會很困惑究竟是什麼原因導致這樣的錯誤發生, 那本章節將會告訴您以下: 怎麼發生的? 怎麼解決? 我們應該用Exception或BaseException嗎
Thumbnail
嗨,大家好!今天我們來聊聊什麼是延遲評估模式,它的好處是啥,還有在 Go 裡面是怎麼玩的。
Thumbnail
嗨,大家好!今天我們來聊聊什麼是延遲評估模式,它的好處是啥,還有在 Go 裡面是怎麼玩的。
Thumbnail
在第十三課中,我們將探索 Python 中的異常處理。 當 Python 程式運行時,它可能會遇到錯誤。 這些錯誤稱為異常 (Exceptions),如果未被處理,它們會導致程式終止。
Thumbnail
在第十三課中,我們將探索 Python 中的異常處理。 當 Python 程式運行時,它可能會遇到錯誤。 這些錯誤稱為異常 (Exceptions),如果未被處理,它們會導致程式終止。
Thumbnail
在C#程式設計中,處理字串操作是一個常見的任務。有時候,我們可能需要去除字串中不需要的空格,特別是在處理使用者輸入、讀取檔案或處理資料庫查詢結果時。在這篇教學中,我們將學習如何使用C#內建的方法來去除字串頭尾的空格。
Thumbnail
在C#程式設計中,處理字串操作是一個常見的任務。有時候,我們可能需要去除字串中不需要的空格,特別是在處理使用者輸入、讀取檔案或處理資料庫查詢結果時。在這篇教學中,我們將學習如何使用C#內建的方法來去除字串頭尾的空格。
Thumbnail
進入選擇敘述語法了。常用的選擇敘述語法,弄懂了就運用自如。
Thumbnail
進入選擇敘述語法了。常用的選擇敘述語法,弄懂了就運用自如。
Thumbnail
看到了一段程式碼,一段乍看之下覺得挺詭異,懷疑是不是寫錯,但搞清楚之後卻拍案叫絕,冷靜下來後卻覺得這樣寫不怎麼好的程式碼。
Thumbnail
看到了一段程式碼,一段乍看之下覺得挺詭異,懷疑是不是寫錯,但搞清楚之後卻拍案叫絕,冷靜下來後卻覺得這樣寫不怎麼好的程式碼。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News