C# 自定义异常
介绍
在 C# 中,异常处理是管理运行时错误的关键机制。虽然 .NET 提供了许多内置异常类型(如 NullReferenceException
和 ArgumentException
),但在某些情况下,您可能需要创建自定义异常来更准确地表示特定于应用程序的错误。自定义异常允许您封装特定的错误信息,并提供更清晰的错误处理逻辑。
什么是自定义异常?
自定义异常是用户定义的异常类,继承自 System.Exception
或其派生类。通过创建自定义异常,您可以为特定的错误场景定义独特的异常类型,从而使代码更具可读性和可维护性。
创建自定义异常
要创建自定义异常,您需要定义一个继承自 Exception
的类。以下是一个简单的示例:
csharp
using System;
public class InvalidAgeException : Exception
{
public InvalidAgeException() : base("年龄无效") { }
public InvalidAgeException(string message) : base(message) { }
public InvalidAgeException(string message, Exception innerException)
: base(message, innerException) { }
}
在这个示例中,InvalidAgeException
是一个自定义异常类,它继承自 Exception
。它有三个构造函数:
- 默认构造函数,提供默认的错误消息。
- 接受自定义错误消息的构造函数。
- 接受自定义错误消息和内部异常的构造函数。
使用自定义异常
创建自定义异常后,您可以在代码中抛出它。以下是一个示例,展示了如何在验证年龄时使用 InvalidAgeException
:
csharp
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void ValidateAge()
{
if (Age < 0 || Age > 120)
{
throw new InvalidAgeException("年龄必须在 0 到 120 之间");
}
}
}
class Program
{
static void Main(string[] args)
{
try
{
Person person = new Person { Name = "John", Age = 150 };
person.ValidateAge();
}
catch (InvalidAgeException ex)
{
Console.WriteLine(ex.Message);
}
}
}
输出:
年龄必须在 0 到 120 之间
在这个示例中,ValidateAge
方法检查 Age
属性是否在有效范围内。如果不在范围内,则抛出 InvalidAgeException
。
实际应用场景
自定义异常在以下场景中非常有用:
- 业务规则验证:例如,验证用户输入是否符合业务规则。
- 特定领域错误:例如,在金融应用程序中,处理与交易相关的特定错误。
- API 错误处理:在 Web API 中,自定义异常可以用于返回特定的 HTTP 状态码和错误消息。
总结
自定义异常是 C# 中强大的工具,可以帮助您更好地管理和处理特定于应用程序的错误。通过创建自定义异常,您可以使代码更具可读性、可维护性,并提高错误处理的精确性。
附加资源
练习
- 创建一个自定义异常
InvalidEmailException
,用于验证电子邮件地址的格式。 - 编写一个方法
ValidateEmail
,如果电子邮件地址无效,则抛出InvalidEmailException
。 - 在
Main
方法中调用ValidateEmail
,并捕获和处理InvalidEmailException
。
通过完成这些练习,您将更好地理解如何在 C# 中使用自定义异常。