第四章 异常捕获与处理

本文介绍了C#中.NET异常处理的基础,包括try、catch、finally语句块的使用,详细阐述了finally块在资源清理中的作用。文章还分析了Exception作为所有异常的基类,以及如何在运行时捕获和处理多种类型的异常,强调了捕获异常的顺序原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1 .NET异常处理基础

1.1 try、catch 和 finally

1.2 异常基类 Exception

2 应对程序运行时出现的异常

2.1 捕获多种类型的异常


1 .NET异常处理基础

1.1 try、catch 和 finally

C#使用 try...catch...finally 关键字编写异常处理代码块。其代码框架如下:

try
{
    // 可能引发异常的语句
}
catch (System.Exception ex)
{
    // 对异常进行处理的语句
}
finally
{
    // 有无异常都必须执行的语句
}

finally 语句块是可选的,主要用于解决资源泄露问题,它位于catch语句块之后,CLR保证它们一定会被执行。

“数组访问越界” 代码异常处理机制如下:

int[] values = new int[10];
try
{
   for (int i = 0; i <= 10; i++)
   {
       Console.WriteLine(values[i]);
   }
}
catch (Exception ex)
{
   Console.WriteLine("异常种类:" + ex.GetType().Name);
   Console.WriteLine("系统给出的出错信息:" + ex.Message);
   Console.WriteLine("系统调用堆栈信息:" + ex.StackTrace);
   Console.WriteLine("引发此错误的方法:" + ex.TargetSite);
}

当运行程序时,异常提示信息示例如下:

异常种类:IndexOutOfRangeException

系统给出的出错信息:索引超出了数组界限。

系统调用堆栈信息:在 ConsoleApplication1.Program.Main(String[] args) 位置 C:\Users\Devin\Desktop\Winform\ConsoleApplication1\Program.cs:行号 20

引发此错误的方法:Void Main(System.String[])

1.2 异常基类 Exception

.NET Framework 异常处理的核心时 Exception类,它是所有可捕获异常类型的基类,程序发生异常时,CLR会创建一个相应类型的异常对象来表示该异常。

2 应对程序运行时出现的异常

2.1 捕获多种类型的异常

当我们需要捕获多种类型的异常时,可以通过并列多个 catch 语句块,每个代码块捕获一种异常(由 catch 后的参数类型决定)。

注意:越特殊的异常类型放在越前面。由于 Exception 是最顶层的异常类型,因此,对它捕获语句应该放到最后面。

try{  }
catch (System.NullReferenceException ex){  }
catch (System.Exception ex){  }

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值