C# 中如何使用多个 catch 子句2024 年 8 月 29 日 | 5 分钟阅读 在本文中,我们将通过一些示例讨论如何在 C# 程序中使用多个 catch 块。但在讨论多个 catch 块的实现之前,我们必须了解 catch 块。 什么是 Catch 块?每个 catch 块 都充当异常处理程序,处理其参数指定的特定类型的异常。可以通过传递 类型参数 为异常处理程序分配特定类型的异常。它必须是继承自 Throwable 类的类的名称。处理程序可以通过名称引用异常。catch 块是在调用异常处理程序时执行的一段代码。如果处理程序是调用堆栈中其 ExceptionType 与抛出的异常类型匹配的第一个异常处理程序,则运行时系统会调用该异常处理程序。在这种情况下,如果 thrower 对象可以合法地与异常处理程序参数关联,则系统认为该对象是匹配的。 在 C# 中,我们可以使用 Try 块来使用多个 Catch 块。多个 catch 块通常用于处理多种类型的异常。对同一异常类型使用多个 catch 块将导致编译时错误,因为 C# 不允许对同一异常类型使用多个 catch 块。try 块后面总是跟着一个 catch 块。通常,catch 块按其在程序中出现的顺序进行检查。如果指定的异常类型与第一个 catch 块匹配,则执行第一个 catch 块,然后忽略其余的 catch 块。当第一个 catch 块与异常类型不匹配时,编译器会寻找下一个 catch 块。 语法它具有以下语法: 示例以下是一些更好地理解 C# 中 catch 块实现的示例。 示例 1: 以下示例尝试生成两种不同类型的异常:DivideByZeroException 和 IndexOutOfRangeException。我们将使用与一个 Try 块关联的两个 Catch 块来处理这些异常。 catch 块会处理不同类型的异常。catch 块 1 用于捕获 DivideByZeroException,catch 块 2 用于处理 IndexOutOfRangeException。 文件名:Catch.cs 输出 The Number: 18 The Divisor value: 9 The Quotient is: 2 The Number: 19 The Divisor value: 0 Division by zero is impossible. The Number: 28 The Divisor value: 1 The Quotient is: 28 The Number: 35 The Divisor value: 0 Division by zero is impossible. The Number: 56 The Index value is Out of Range 说明 数组初始化: 在此示例中,两个数组(numbers 和 divisors)都使用整数值进行初始化。 For 循环: 程序使用 for 循环 遍历数组的元素,一个 try 块,以及 numbers[j] / divisors(J)(此指令取自循环内部)。 Catch 块: Try 块后面跟着两个 catch 块。Catch 块有一组不同的异常,这些异常可以在执行 Try 块中的代码时发现。 catch 块 1 捕获 DivideByZeroException 并打印一条消息,指示不能除以零。 其后是第二个 catch 块,它打印一个错误 'IndexOutOfRangeException',表示索引值超出范围。 循环继续: 之后,即使发现异常,程序也可以继续下一个循环,从而能够处理数组中的每个元素。 示例 2 以下示例描述了 try 块异常。因此,我们使用三种不同类型的 catch 块来处理 try 块抛出的异常。catch 块 1 处理 IndexOutOfRangeException,catch 块 2 处理 FormatException,catch 块 3 处理 OverflowException。 文件名:MutliCatchBlock.cs 输出 The value entered is not a number! 说明
结论总之,多重 catch 块处理不同类型的异常。每个 catch 块处理多种类型的异常,允许我们创建多个 catch 块。 |
我们请求您订阅我们的新闻通讯以获取最新更新。