例外處理用於處理程式在運行時可能出現的錯誤情況,這樣可以確保程式的穩定性和安全性。
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);
}
在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
關鍵字用於無論是否發生異常,都將執行的程式碼區塊:
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.");