多个 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 块。
挑战
简单创建一个名为 DivideNumbers 的方法,它接受两个字符串参数:
numeratorStr:表示分子的字符串denominatorStr:表示分母的字符串
该方法应:
- 尝试将两个字符串解析为整数
- 尝试用分子除以分母
- 以整数形式返回结果
- 处理 FormatException,打印 "Invalid format" 并返回 0
- 处理 DivideByZeroException,打印 "Cannot divide by zero" 并返回 0
- 使用通用的 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);
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C# 在线编译器