C#入門-Day9:例外處理

更新於 2024/05/25閱讀時間約 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
    本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
    Thumbnail
    完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
    Thumbnail
    在進行資訊輸入的過程中,經常需要在不同語言的文字之間切換輸入法,這可能會影響效率。不過,透過程式設計的方法,我們可以實現在選取到需要輸入中文的輸入框時自動切換到中文輸入法,讓操作更加便利。在這篇文章中,我們將介紹兩種實現自動切換中文輸入法的方法,一種是切換輸入法,另一種是使用IME輸入法。
    Thumbnail
    當我的自營工作室客源開始穩定時,C就這樣悄悄走進我的生命裡,至今為止,我和C從來沒有吵架過,連一點點的不愉快、疙瘩甚至懷疑都沒有,對我而言,C的意義只有美好。她總是希望我過得好,我也祝福她永遠快樂。     我的租屋處是一棟由五樓透天隔間的大套房,而我就住在頂樓,旁邊還有一間空房一直沒人承租
    Thumbnail
    JSON(JavaScript Object Notation)是一種常用的數據交換格式,用於在不同的應用程序之間傳遞結構化數據。在C#中,我們可以使用Newtonsoft.Json模組來處理JSON資料。
    Thumbnail
    一、C#介紹 二、為什麼要學C# 三、.NET Framework介紹
    Thumbnail
    發洩完情緒之後,內心裡,總會有一種抒坦。是那種放下的感覺,是那種,什麼都好,都可以不重要,只有自己的那種,唯我獨尊的快感。可以不必再在意些什麼,不必再掙扎著去要求些什麼。唯有放寛心了,才能更真實去體驗自己正在經歷的過程。放下些什麼,才能獲得些什麼。 昨晚,C因為工作無法前來陪伴休假的我。經前症候群嚴
    Thumbnail
    這篇文章將會介紹官方設置好的偵測玩家輸入,在撰寫遊戲程式的時候肯定需要偵測玩家輸入,其實並不需要自行撰寫程式來監控玩家操作,而是直接調閱官方的資料庫即可。
    Thumbnail
    前言 輸出 printf 格式控制字元、格式控制符(format char) 前言 輸出控制字元、輸出控制符 轉義字元、轉義符 格式控制字元、格式控制符 輸入 scanf gets gets與scanf差異
    Thumbnail
    本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
    Thumbnail
    完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
    Thumbnail
    在進行資訊輸入的過程中,經常需要在不同語言的文字之間切換輸入法,這可能會影響效率。不過,透過程式設計的方法,我們可以實現在選取到需要輸入中文的輸入框時自動切換到中文輸入法,讓操作更加便利。在這篇文章中,我們將介紹兩種實現自動切換中文輸入法的方法,一種是切換輸入法,另一種是使用IME輸入法。
    Thumbnail
    當我的自營工作室客源開始穩定時,C就這樣悄悄走進我的生命裡,至今為止,我和C從來沒有吵架過,連一點點的不愉快、疙瘩甚至懷疑都沒有,對我而言,C的意義只有美好。她總是希望我過得好,我也祝福她永遠快樂。     我的租屋處是一棟由五樓透天隔間的大套房,而我就住在頂樓,旁邊還有一間空房一直沒人承租
    Thumbnail
    JSON(JavaScript Object Notation)是一種常用的數據交換格式,用於在不同的應用程序之間傳遞結構化數據。在C#中,我們可以使用Newtonsoft.Json模組來處理JSON資料。
    Thumbnail
    一、C#介紹 二、為什麼要學C# 三、.NET Framework介紹
    Thumbnail
    發洩完情緒之後,內心裡,總會有一種抒坦。是那種放下的感覺,是那種,什麼都好,都可以不重要,只有自己的那種,唯我獨尊的快感。可以不必再在意些什麼,不必再掙扎著去要求些什麼。唯有放寛心了,才能更真實去體驗自己正在經歷的過程。放下些什麼,才能獲得些什麼。 昨晚,C因為工作無法前來陪伴休假的我。經前症候群嚴
    Thumbnail
    這篇文章將會介紹官方設置好的偵測玩家輸入,在撰寫遊戲程式的時候肯定需要偵測玩家輸入,其實並不需要自行撰寫程式來監控玩家操作,而是直接調閱官方的資料庫即可。
    Thumbnail
    前言 輸出 printf 格式控制字元、格式控制符(format char) 前言 輸出控制字元、輸出控制符 轉義字元、轉義符 格式控制字元、格式控制符 輸入 scanf gets gets與scanf差異