C# 编程指南:异常

在C#中,异常是在程序执行过程中发生的错误或意外情况。当出现异常时,程序的正常流程被中断,并且执行权被传递到异常处理机制。异常提供了一种机制,用于捕获、处理和恢复错误,以确保程序的稳定性和可靠性。

部分
1
异常的概念
异常是在程序运行过程中发生的错误或异常情况。
异常可以由系统引发(如内存不足)或由开发人员在代码中显式引发。
异常会中断正常的程序执行流程,并转到异常处理机制。
部分
2
异常的分类
在C#中,异常分为两种类型:系统异常和自定义异常。
系统异常是由.NET Framework或相关库引发的异常,用于表示底层系统的错误或异常情况。例如,NullReferenceException、ArgumentException等。
自定义异常是由开发人员根据应用程序需求定义的异常。可以从基类 Exception 派生自定义异常类,以便提供更具体的错误信息和处理逻辑。
部分
3
异常处理的基本结构
异常处理通常使用 try-catch-finally 结构。
try 块中包含可能引发异常的代码。
catch 块用于捕获和处理特定类型的异常。
finally 块中的代码始终会执行,无论是否发生异常。
try
{
    // 可能引发异常的代码
}
catch (ExceptionType1 ex)
{
    // 处理特定类型的异常
}
catch (ExceptionType2 ex)
{
    // 处理另一种类型的异常
}
finally
{
    // 最终处理,无论是否发生异常
}
部分
4
捕获和处理异常
可以使用 catch 块捕获特定类型的异常,并在块中处理异常。
可以通过访问异常对象的属性(如 Message)获取异常的详细信息。
可以使用 throw 语句重新引发异常,以便在更高层次的异常处理中处理异常。
try
{
    // 可能引发异常的代码
}
catch (ExceptionType ex)
{
    // 处理特定类型的异常
    Console.WriteLine("发生异常:" + ex.Message);
    throw; // 重新引发异常
}
部分
5
自定义异常
可以通过创建自定义异常类来表示特定的错误或异常情况。
自定义异常类应派生自基类 Exception。
可以添加自定义的属性和方法,以提供更具体的错误信息和处理逻辑。
// 自定义异常类
public class CustomException : Exception
{
    public CustomException(string message) : base(message)
    {
    }

    // 添加自定义的属性和方法
    // ...
}

try
{
    // 可能引发自定义异常的代码
}
catch (CustomException ex)
{
    // 处理自定义异常
    Console.WriteLine("发生自定义异常:" + ex.Message);
}
部分
6
示例代码
以下是一些常见的异常和对应的示例代码:
// NullReferenceException:访问空引用对象的成员
string name = null;
int length = name.Length; // 引发NullReferenceException

// ArgumentException:无效的参数
int age = -10;
if (age < 0)
{
    throw new ArgumentException("年龄不能为负数");
}

// FileNotFoundException:文件未找到
string filePath = "path/to/nonexistent/file.txt";
if (!File.Exists(filePath))
{
    throw new FileNotFoundException("文件未找到", filePath);
}

// DivideByZeroException:除以零
int numerator = 10;
int denominator = 0;
int result = numerator / denominator; // 引发DivideByZeroException

// CustomException:自定义异常
public class CustomException : Exception
{
    public CustomException(string message) : base(message)
    {
    }
}

try
{
    // 可能引发自定义异常的代码
    throw new CustomException("自定义异常");
}
catch (CustomException ex)
{
    // 处理自定义异常
    Console.WriteLine("发生自定义异常:" + ex.Message);
}
    目录

  • 1.
    异常的概念
  • 2.
    异常的分类
  • 3.
    异常处理的基本结构
  • 4.
    捕获和处理异常
  • 5.
    自定义异常
  • 6.
    示例代码