第四章 异常捕获与处理

版权声明:本文为博主原创文章,转载请注明出处: https://blog.csdn.net/IntegralforLove/article/details/90042946

目录

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){  }

猜你喜欢

转载自blog.csdn.net/IntegralforLove/article/details/90042946