Menu
CoddyTech

自定义异常

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

自定义异常让你能够为应用程序中特有的错误场景创建专门的异常类型。

要创建自定义异常,请定义一个继承自 Exception 的类。继承意味着你的新类会自动获得父类的所有行为,在这里,父类是 Exception,同时你还可以添加或自定义功能。语法 class MyException : Exception 表示MyException 扩展了 Exception。

public class InvalidAgeException : Exception
{
    public InvalidAgeException() : base("Age is not valid.")
    {
    }
    
    public InvalidAgeException(string message) : base(message)
    {
    }
}

: Exception:继承自内置的 Exception 类。
: base(...):调用父类 Exception 构造函数来设置错误消息。
第一个构造函数在未提供消息时提供默认消息。
第二个构造函数接受自定义消息,方便调用者详细描述错误。

现在,你可以在需要时抛出自定义异常:

int age = -5;
if (age < 0)
{
    throw new InvalidAgeException("Age cannot be negative.");
}

当这段代码使用负年龄运行时,会抛出你自定义的异常,并显示消息 "Age cannot be negative."

注意:在本课的练习中,验证函数会在输入有效时返回 true,输入无效时抛出自定义异常。由于未处理的异常会立即停止执行,因此测试用例只需验证返回 true 的情况:对于无效输入,异常本身就是可观察到的结果。

challenge icon

挑战

中等

创建一个名为 InvalidTemperatureException 的自定义异常类,并让它继承 Exception。它应包含:

  1. 一个默认构造函数,将消息设为 "Temperature is not valid."
  2. 一个接受自定义消息的构造函数。

然后实现一个名为 checkTemperature 的方法,该方法:

  • 接受一个表示摄氏温度的整数参数
  • 如果温度小于 -273,则抛出一条消息为 "Temperature below absolute zero!" 的 InvalidTemperatureException
  • 如果温度有效,则返回 true

亲手试试

using System;

class CheckTemperature
{
    // 在这里创建你自己的异常类
    
    public static bool checkTemperature(int celsius)
    {
        // 在这里编写你的代码
    }
    
}
quiz icon自我测试

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

逻辑与流程中的所有课

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