C# try/catch

2025 年 8 月 27 日 | 7 分钟阅读

在 C# 编程语言中,异常处理使用 try/catch 语句执行。try 块用于编写在执行过程中可能导致异常的代码。当发生错误时,程序会立即移动到 catch 块来处理运行时错误。它允许多个 catch 块处理不同类型的异常,例如 DivideByZeroException、NullReferenceException 和 IndexOutOfRangeException。

语法

它具有以下语法。

在这个语法中,

  • try 块包含可能导致异常的代码。
  • 如果发生异常,catch 块用于处理异常。

C# 简单的 try/catch 示例

让我们举一个例子来说明 C# 中的 try/catch 块。

示例

编译并运行

输出

ERROR!
Error: Cannot divide by Zero.

说明

在此示例中,我们演示了 C# 中的异常处理。首先,我们有两个变量 n1 和 n2,值分别为 10 和 0。之后,我们将 n1 除以 n2,这会导致 DivideByZeroException。catch 块不是使程序崩溃,而是处理错误并显示错误消息。

C# Try 块

C# 编程语言中,try 块用于封装在程序运行时可能抛出异常的代码。try 块包含可能导致错误的代码,如果发生错误,程序会立即跳到 catch 块进行处理。

语法

它具有以下语法。

C# Catch 块

在 C# 中,catch 块用于处理代码的异常。此块仅在 try 块中发生错误时执行。它还可以访问异常对象以获取详细信息,例如错误消息和堆栈跟踪。它使我们能够防止程序崩溃,并使我们能够有效地处理错误。

语法

它具有以下语法。

Finally 块

在 C# 中,finally 块是一个代码块,无论条件是否为 true,它都会始终运行。它总是在 try 和 catch 块之后执行。它主要用于执行清理操作,例如释放资源、关闭文件和断开数据库连接。

语法

它具有以下语法。

C# 处理所有异常的简单示例

让我们举一个在 try catch 块中处理所有异常的例子。

示例

编译并运行

输出

Error: Division by zero is not allowed
Finally block executed: Cleaning up resources or finishing tasks.

说明

在此示例中,我们创建了一个 Division 类,并声明了两个浮点数 A 和 B,其中 A 为 75,B 为 0。之后,try 块检查是否除以零,如果除数为 0 则抛出异常。catch 块处理异常并打印错误消息。finally 块始终执行,这确保无论是否发生异常,都将执行清理或最终任务。

多个 Catch 块

在 C# 中,多个 catch 块提供了一种强大的机制来处理运行时可能发生的各种类型的异常。一个 try 块可以后跟多个 catch 块,每个块用于处理特定的异常类型。它使我们能够根据要求响应程序中不同类型的错误情况。

语法

它具有以下语法。

C# 多个 Catch 块的简单示例

让我们举一个例子来说明 C# 中的多个 catch 块。

示例

编译并运行

输出

它有以下输出。

情况 1

Enter any number for your choice: 2
The Value at index 2 = 35
The Program finished.

情况 2

Please input a number for your choice 5
The index you entered is invalid. 
The Program finished.

情况 3

Please input a number for your choice abc
Please enter a valid number 
The Program finished.

说明

在此示例中,我们创建了一个整数类型数组并分配了值。之后,我们从用户那里获取一个数字并将其用作索引以从数组中显示值。如果索引值无效,则显示错误消息。如果输入不是数字,则会给出另一个错误,并且还会处理任何其他错误。最后,它始终打印程序已完成。

C# 嵌套 try/catch 块

在 C# 编程语言中,嵌套 try/catch 块指的是将一个 try/catch 块放置在另一个块中以在多个级别处理错误。内部 try/catch 处理代码部分中发生的错误。如果它没有捕获异常,外部 try/catch 块可以处理运行时环境中的错误。

语法

它具有以下语法。

C# 嵌套 try/catch 示例

让我们举一个例子来说明 C# 中的嵌套 try/catch。

示例

编译并运行

输出

The Outer try block starts.
The Inner try block starts.
Index out of range.
The Finally block executed.

说明

在此示例中,我们演示了 C# 中的嵌套 try/catch 块以及 finally 块。在内部 try 块中,它尝试访问 numbers[5],该索引不存在并抛出 IndexOutOfException。外部 catch 块处理 IndexOutOfRangeException 并显示相应的错误消息。之后,当异常处理完毕后,finally 块执行,它始终运行并显示消息“Finally block executed”。

结论

总之,try/catch 块是处理运行时错误而不会导致程序崩溃的重要功能。使用 try、catch 和 finally 块使代码更可靠并防止程序崩溃。它允许多个 catch 块处理不同类型的异常。

C# try/catch 常见问题解答

1) 描述 C# 中的 try/catch 块?

在 C# 编程语言中,异常处理使用 try/catch 语句执行。try 块用于编写可能导致异常的代码。当发生错误时,程序会跳到 catch 块来处理运行时错误。它允许多个 catch 块处理不同类型的异常。

2) 一个 try 块是否允许有多个 catch 块?

是的,我们可以在 C# 的单个 try 块中使用多个 catch 块。

3) finally 块在 C# 的 try/catch 块中是强制性的吗?

不,finally 块在 try/catch 块中不是强制性的。它是异常处理中的可选块。当我们需要一些代码始终运行,无论是否发生异常时,我们才会使用它。

4) 定义 C# 中的多个 catch 块?

在 C# 中,多个 catch 块提供了一种强大的机制来处理不同类型的异常,以处理运行时错误。因为多个异常是使用多个 catch 块处理的。

5) 如果没有任何 catch 块匹配异常会发生什么?

如果没有 catch 块匹配异常类型,程序将终止,并且未处理的异常将被抛到运行时环境。


下一主题C# finally