C#入門-Day9:例外處理

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

為什麼要使用「例外處理」

例外處理用於處理程式在運行時可能出現的錯誤情況,這樣可以確保程式的穩定性和安全性。

語法

C#使用 try-catch 語法來進行例外處理:

try
{
// 可能出現異常的程式碼
}
catch (Exception ex)
{
// 處理異常的程式碼
Console.WriteLine(ex.Message);
}

簡單範例

try
{
int divideByZero = 5 / 0;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Dividing by zero is not allowed. Error: " + ex.Message);
}

使用多個catch塊來處理多種異常

在C#中,你可以使用多個 catch 塊來處理不同類型的異常。這樣,你可以根據異常的類型來進行特定的錯誤處理。下面是一個例子:

try
{
// 可能出現異常的程式碼
}
catch (DivideByZeroException ex)
{
// 處理除以零的異常
Console.WriteLine("Dividing by zero is not allowed. Error: " + ex.Message);
}
catch (IndexOutOfRangeException ex)
{
// 處理索引越界的異常
Console.WriteLine("Index out of range. Error: " + ex.Message);
}
catch (Exception ex)
{
// 處理其他類型的異常
Console.WriteLine(ex.Message);
}

在這個例子中,如果程式碼塊中出現了除以零或者索引越界的異常,則會執行對應的 catch 塊。如果出現了其他類型的異常,則會執行最後一個 catch 塊。

使用Finally區塊

finally 關鍵字用於無論是否發生異常,都將執行的程式碼區塊:

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

常見異常類型

  • System.Exception:所有異常的基類。
  • System.NullReferenceException:引用未設置為對象實例時引發。
  • System.IndexOutOfRangeException:試圖訪問超出陣列範圍的元素時引發。
  • System.InvalidOperationException:方法調用的狀態無效時引發。
  • System.ArgumentException:傳遞給方法的參數無效時引發。

主動觸發異常訊息

你可以使用 throw 關鍵字來主動引發異常:

throw new Exception("This is an exception.");

主動觸發用戶自定義異常訊息

可以自定義 Exception 類別來產生特定的異常訊息:

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

// 使用
throw new CustomException("This is a custom exception.");
avatar-img
15會員
111內容數
日後將分享關於我的經驗(日常、工作、技術),並期待未來能創造屬於我的宇宙。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Michael楊 的其他內容
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
本章節旨在介紹 C# 中函數的基本結構,包括訪問修飾符、返回類型、方法名稱、參數列表和方法體。同時,也介紹了函數的各種呼叫方式、參數傳遞方式和返回值類型。讀者可以通過本章節,深入理解 C# 中函數的使用和應用。
本文是C#入門教程的一部分,涵蓋了流程控制的各種語句與迴圈。這包括if、else if和else語句,三元運算子,switch語句,以及for、foreach和while迴圈。文中還介紹了如何在迴圈中使用break、continue、return和goto語句。
C#中的運算符包括算術運算子(如加法、減法、乘法等)、比較運算子(如等於、不等於、大於等)、賦值運算子(如賦值、加並賦值等)、邏輯運算子(如與、或、非等)和位元運算子(如按位與、按位或等)。這些運算符有不同的優先等級,例如括號的優先等級最高,其次是次方、乘、除、餘數等。
內容涵蓋資料型別、型別轉換、自訂型別、元組型別、集合型別和字典型別等主題。文章首先詳述內建型別如bool、byte、char等的定義和使用,接著討論型別轉換,包括隱含轉換和明確轉換。之後文章介紹自訂型別的建立,以及元組、集合、陣列和字典型別的操作與例子。
在學習C#之前,必須先建立開發環境,例如安裝Visual Studio或其他IDE,並且建立第一個C#專案。可以在Visual Studio中或使用dotnet CLI來建立各種類型的專案。
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
本章節旨在介紹 C# 中函數的基本結構,包括訪問修飾符、返回類型、方法名稱、參數列表和方法體。同時,也介紹了函數的各種呼叫方式、參數傳遞方式和返回值類型。讀者可以通過本章節,深入理解 C# 中函數的使用和應用。
本文是C#入門教程的一部分,涵蓋了流程控制的各種語句與迴圈。這包括if、else if和else語句,三元運算子,switch語句,以及for、foreach和while迴圈。文中還介紹了如何在迴圈中使用break、continue、return和goto語句。
C#中的運算符包括算術運算子(如加法、減法、乘法等)、比較運算子(如等於、不等於、大於等)、賦值運算子(如賦值、加並賦值等)、邏輯運算子(如與、或、非等)和位元運算子(如按位與、按位或等)。這些運算符有不同的優先等級,例如括號的優先等級最高,其次是次方、乘、除、餘數等。
內容涵蓋資料型別、型別轉換、自訂型別、元組型別、集合型別和字典型別等主題。文章首先詳述內建型別如bool、byte、char等的定義和使用,接著討論型別轉換,包括隱含轉換和明確轉換。之後文章介紹自訂型別的建立,以及元組、集合、陣列和字典型別的操作與例子。
在學習C#之前,必須先建立開發環境,例如安裝Visual Studio或其他IDE,並且建立第一個C#專案。可以在Visual Studio中或使用dotnet CLI來建立各種類型的專案。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
但也正因為沒有人生來完美,失敗總是不可避免的會發生;不論你對你做的事情再有自信、付出多大努力,會失敗的時候就是會失敗。 然而,失敗不代表著你的寫作人生就毫無轉機。我們必須學會與失敗相處,並把曾經醜陋的自己牢記在心。
Thumbnail
專案失敗以往被定義為超期、超預算或無法結案,但現今專案管理思維重新把失敗定義為未能產生預期價值。文章從產品經理、軟體設計和管理流程三方面提出對失敗專案的見解和解決方法。
Thumbnail
在實務上,若Python報錯時,若引入的套件越多伴隨的異常訊息會變得越來越複雜,看到一推密密麻麻的內容時,很多時候都想直接跳過。 本文將利用Traceback來讓異常訊息變得更好理解。
有時候反向操作或背離原常、習慣的行為模式而轉向以不同形式方法做
Thumbnail
在程式世界裡,if 條件句是我們的好朋友,幫我們做各種決策。如果不注意可能會讓我們掉進小陷阱。文中透過幾個例子,在使用 if 時可能會遇到的一些常見問題,像是不必要的 if、過於複雜的條件、忘了用嚴格比較,還有嵌套太深的 if。透過這篇文章,你將學到如何避免這些小錯誤,寫出更乾淨、更有效率的程式碼。
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
Thumbnail
在現實生活中,充滿的警報及安全措施,總會設個安全線在那,若觸碰到底線時則會有警報響起。 在Python也有類似的作法,如果希望在某個條件達到時,就拉起警報不要讓程式繼續進行下去,就適合使用raise 這種機制讓開發者能夠在程序執行時檢測到不正確的條件,然後通過引發異常停止程序的執行或通知使用者。
Thumbnail
本文介紹Python程式設計中處理異常的try, except, else, finally語句,並提供程式範例來更深刻理解使用方法。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
但也正因為沒有人生來完美,失敗總是不可避免的會發生;不論你對你做的事情再有自信、付出多大努力,會失敗的時候就是會失敗。 然而,失敗不代表著你的寫作人生就毫無轉機。我們必須學會與失敗相處,並把曾經醜陋的自己牢記在心。
Thumbnail
專案失敗以往被定義為超期、超預算或無法結案,但現今專案管理思維重新把失敗定義為未能產生預期價值。文章從產品經理、軟體設計和管理流程三方面提出對失敗專案的見解和解決方法。
Thumbnail
在實務上,若Python報錯時,若引入的套件越多伴隨的異常訊息會變得越來越複雜,看到一推密密麻麻的內容時,很多時候都想直接跳過。 本文將利用Traceback來讓異常訊息變得更好理解。
有時候反向操作或背離原常、習慣的行為模式而轉向以不同形式方法做
Thumbnail
在程式世界裡,if 條件句是我們的好朋友,幫我們做各種決策。如果不注意可能會讓我們掉進小陷阱。文中透過幾個例子,在使用 if 時可能會遇到的一些常見問題,像是不必要的 if、過於複雜的條件、忘了用嚴格比較,還有嵌套太深的 if。透過這篇文章,你將學到如何避免這些小錯誤,寫出更乾淨、更有效率的程式碼。
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
Thumbnail
在現實生活中,充滿的警報及安全措施,總會設個安全線在那,若觸碰到底線時則會有警報響起。 在Python也有類似的作法,如果希望在某個條件達到時,就拉起警報不要讓程式繼續進行下去,就適合使用raise 這種機制讓開發者能夠在程序執行時檢測到不正確的條件,然後通過引發異常停止程序的執行或通知使用者。
Thumbnail
本文介紹Python程式設計中處理異常的try, except, else, finally語句,並提供程式範例來更深刻理解使用方法。