(24)C#异常处理——try-catch-finally的用法

 什么是异常?

异常是指在程序运行过程中,发生错误会导致程序退出,这种错误,就叫做异常。处理这种错误,叫异常处理。

异常处理如何操作?

C# 异常处理是建立在四个关键字之上的:try、catch、finally和throw。

  1. try:一个try块标识了一个将被激活的特定的异常的代码块。后跟一个后多个catch块。简单的说就是可能会出现错误的代码块要放在try中。
  2. catch:程序通过异常处理程序捕获异常。catch关键字标识异常的捕获。
  3. finally:finally块用于执行给定的语句,不管是否会出现异常都会执行。就好比你打开一个文件,不管是否出现异常,你都要关闭这个文件
  4. throw:当问题出现时,程序抛出一个异常。使用throw关键字来抛出异常。

示例程序代码:声明一个有10个元素的数组,通过循环打印出20个元素。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _18trycatchDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
                for (int i = 0; i < 20; i++)
                {
                    Console.WriteLine(arr[i] + " ");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

当打印完数组arr的10个元素之后,想要再打印第11个元素的时候,程序就会捕获异常,并输出异常的信息“索引超出了数组界限”。

C#中的常用异常类

1、SystemException类:该类是System命名空间中所有其他异常类的基类。(建议:公共语言运行时引发的异常通常用此类)

2、ApplicationException类:该类表示应用程序发生非致命错误时所引发的异常(建议:应用程序自身引发的异常通常用此类)

与参数有关的异常类

此类异常类均派生于SystemException,用于处理给方法成员传递的参数时发生异常

1、ArgumentException类:该类用于处理参数无效的异常,除了继承来的属性名,此类还提供了string类型的属性ParamName表示引发异常的参数名称。

2、FormatException类:该类用于处理参数格式错误的异常。

与成员访问有关的异常

1、MemberAccessException类:该类用于处理访问类的成员失败时所引发的异常。失败的原因可能的原因是没有足够的访问权限,也可能是要访问的成员根本不存在(类与类之间调用时常用)

2、MemberAccessException类的直接派生类:

  • i、FileAccessException类:该类用于处理访问字段成员失败所引发的异常
  • ii、MethodAccessException类:该类用于处理访问方法成员失败所引发的异常
  • iii、MissingMemberException类:该类用于处理成员不存在时所引发的异常

与数组有关的异常

以下三个类均继承于SystemException类

1、IndexOutOfException类:该类用于处理下标超出了数组长度所引发的异常

2、ArrayTypeMismatchException类:该类用于处理在数组中存储数据类型不正确的元素所引发的异常

3、RankException类:该类用于处理维数错误所引发的异常

与IO有关的异常

1、IOException类:该类用于处理进行文件输入输出操作时所引发的异常。

2、IOException类的5个直接派生类:

  • i、DirectionNotFoundException类:该类用于处理没有找到指定的目录而引发的异常。
  • ii、FileNotFoundException类:该类用于处理没有找到文件而引发的异常。
  • iii、EndOfStreamException类:该类用于处理已经到达流的末尾而还要继续读数据而引发的异常。
  • iv、FileLoadException类:该类用于处理无法加载文件而引发的异常。
  • v、PathTooLongException类:该类用于处理由于文件名太长而引发的异常。

与算术有关的异常

1、ArithmeticException类:该类用于处理与算术有关的异常。

2、ArithmeticException类的派生类:

  • i、DivideByZeroException类:表示整数货十进制运算中试图除以零而引发的异常。
  • ii、NotFiniteNumberException类:表示浮点数运算中出现无穷打或者非负值时所引发的异常。

猜你喜欢

转载自blog.csdn.net/qq_39003429/article/details/82020922