在C#中,處理異常情況通常使用try-catch
語句。try
塊包含可能引發(fā)異常的代碼,而catch
塊包含處理異常的代碼。當(dāng)try
塊中的代碼引發(fā)異常時,程序?qū)⑻D(zhuǎn)到相應(yīng)的catch
塊。如果沒有匹配的catch
塊,異常將被傳播到調(diào)用棧中的更高層,直到被捕獲或?qū)е鲁绦蚪K止。
以下是一個簡單的示例,展示了如何使用try-catch
處理異常:
using System;
class ExceptionHandlingExample
{
static void Main()
{
int[] numbers = new int[5];
try
{
// 嘗試訪問數(shù)組中不存在的元素,將引發(fā)異常
Console.WriteLine(numbers[5]);
}
catch (IndexOutOfRangeException ex)
{
// 處理異常
Console.WriteLine("發(fā)生錯誤: " + ex.Message);
}
}
}
在這個示例中,我們嘗試訪問數(shù)組中不存在的元素,這將引發(fā)IndexOutOfRangeException
異常。我們使用catch
塊捕獲這個異常,并輸出一條錯誤消息。
對于更復(fù)雜的異常處理,可以使用多個catch
塊來捕獲不同類型的異常,或者使用finally
塊來執(zhí)行無論是否發(fā)生異常都需要執(zhí)行的代碼。例如:
using System;
class ExceptionHandlingExample
{
static void Main()
{
try
{
// 可能引發(fā)異常的代碼
}
catch (IndexOutOfRangeException ex)
{
// 處理特定類型的異常
Console.WriteLine("發(fā)生錯誤: " + ex.Message);
}
catch (DivideByZeroException ex)
{
// 處理另一個特定類型的異常
Console.WriteLine("發(fā)生錯誤: " + ex.Message);
}
finally
{
// 無論是否發(fā)生異常都會執(zhí)行的代碼
Console.WriteLine("異常處理完成");
}
}
}
在這個示例中,我們使用兩個catch
塊分別捕獲IndexOutOfRangeException
和DivideByZeroException
異常,并在finally
塊中執(zhí)行一些清理操作。