Menu
CoddyTech

多个 Catch 块

本课属于 Coddy C# 学习旅程的“逻辑与流程”单元。第 25 课,共 66 课。

多个 catch 块可以让你针对不同类型的异常,分别使用特定代码进行处理。

先从一个基本的 try 代码块开始:

try
{
    int number = int.Parse("abc");
}

为特定异常添加 catch 块:

try
{
    int number = int.Parse("abc");
}
catch (FormatException ex)
{
    Console.WriteLine("Format Exception: " + ex.Message);
}

你可以添加多个 catch 块来处理不同的异常:

try
{
    int number = int.Parse("abc");
    int result = 10 / number;
}
catch (FormatException ex)
{
    Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}

第一个匹配的 catch 块会执行。请按异常类型从最具体到最通用的顺序排列 catch 块。

challenge icon

挑战

简单

创建一个名为 DivideNumbers 的方法,它接受两个字符串参数:

  • numeratorStr:表示分子的字符串
  • denominatorStr:表示分母的字符串

该方法应:

  1. 尝试将两个字符串解析为整数
  2. 尝试用分子除以分母
  3. 以整数形式返回结果
  4. 处理 FormatException,打印 "Invalid format" 并返回 0
  5. 处理 DivideByZeroException,打印 "Cannot divide by zero" 并返回 0
  6. 使用通用的 catch 代码块处理其他异常,打印 "An error occurred" 并返回 0

亲手试试

using System;

public class Program
{
    public static int DivideNumbers(string numeratorStr, string denominatorStr)
    {
        // 在这里编写你的代码
    }
    
    public static void Main(string[] args)
    {
        string numeratorStr = Console.ReadLine();
        string denominatorStr = Console.ReadLine();
        
        int result = DivideNumbers(numeratorStr, denominatorStr);
        Console.WriteLine("Result: " + result);
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C# 在线编译器