22 异常处理之异常的种类

在上一篇文章中,我们讨论了面向对象编程中的构造函数与析构函数。今天我们将深入了解异常处理的基础知识,特别是各种异常的种类。异常处理是开发中不可或缺的重要组成部分,它使我们能够在错误发生时优雅地处理程序的行为,而不至于让整个程序崩溃。

什么是异常?

在 C# 中,异常 是一种发生在程序执行过程中的错误情况。它可以是因为代码中的逻辑错误、资源不可用,或者外部系统(如网络、文件等)的故障等引起的。当异常发生时,程序的控制流将暂停,转而使用异常处理机制来处理这个错误。

异常的种类

1. 系统异常(System.Exception)

在 C# 中,所有异常的基类是 System.Exception。自定义的异常通常会继承自这个类。它提供了处理异常的一般结构。

2. 常见的系统异常

C# 提供了多个常见异常类,常见的包括:

  • ArgumentNullException:当一个方法接收到 null 参数,但不允许使用 null

    1
    2
    3
    4
    5
    6
    7
    8
    public void ProcessData(string data)
    {
    if (data == null)
    {
    throw new ArgumentNullException(nameof(data), "数据不能为空");
    }
    // 处理数据...
    }
  • ArgumentOutOfRangeException:表示索引超出了范围。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void AccessArrayElement(int[] array, int index)
    {
    if (index < 0 || index >= array.Length)
    {
    throw new ArgumentOutOfRangeException(nameof(index), "索引超出范围");
    }

    int value = array[index];
    // 处理值...
    }
  • InvalidOperationException:当方法调用的对象状态不正确时抛出这种异常。

    1
    2
    3
    4
    5
    6
    7
    8
    public void StartProcess(bool isRunning)
    {
    if (isRunning)
    {
    throw new InvalidOperationException("进程已经在运行中");
    }
    // 启动过程...
    }
  • DivideByZeroException:当尝试将一个数除以零时抛出。

    1
    2
    3
    4
    5
    6
    7
    8
    public double Divide(int a, int b)
    {
    if (b == 0)
    {
    throw new DivideByZeroException("不能除以零");
    }
    return a / b;
    }

3. 自定义异常

除了使用系统提供的异常类外,我们可以根据需求自定义异常。自定义异常通常用于表示特定的业务逻辑错误。

1
2
3
4
5
6
public class CustomException : Exception
{
public CustomException(string message) : base(message)
{
}
}

在实际使用中,可以这样抛出自定义异常:

1
2
3
4
5
6
7
8
public void ValidateUser(string username)
{
if (string.IsNullOrEmpty(username))
{
throw new CustomException("用户名不能为空");
}
// 处理用户...
}

4. 捕获异常示例

在了解了异常的种类后,我们将讨论如何捕获和处理这些异常。在下一篇文章中,我们将详细介绍如何使用 try-catch 语句来捕获并处理这些异常。

结语

异常处理是确保 C# 程序健壮性和可靠性的重要手段。理解不同种类的异常以及在什么时候可能会抛出这些异常,可以帮助我们在编写代码时避免潜在的错误。在下一篇文章中,我们将深入探讨异常的捕获和处理机制,帮助你更好地管理程序异常。

22 异常处理之异常的种类

https://zglg.work/csharp-zero/22/

作者

AI免费学习网(郭震)

发布于

2024-08-13

更新于

2024-08-13

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论