C#异常处理

C#异常处理

感谢千峰教育的学习视频

using System;

//异常:程序在运行的过程中产生的种种的不正常的现象 
//异常处理:如果一个异常产生,但是没有被处理,这个异常会导致程序奔溃
/*
 * 语法:
 *      try
 *      {
 *          //可能会出现异常的代码
 *      }
 *      catch(异常类型e)
 *      {
 *          //这里捕获try中可能出现的异常
 *      }
 *      finally
 *      {
 *          //无论程序有没有异常,finally中的代码始终会执行
 *      }
 */
/*
 * 1、一个try可以匹配多个catch来捕获多种异常
 * 2、如果有多个catch
 *     2.1、如果多个catch捕获的异常彼此之间没有继承关系,那么关系无所谓
 *     2.2、如果多个catch捕获的异常彼此之间有继承关系,那么必须把父类异常放在最后
 *     
 */

public class Program
{
    public static void Main(string[] args)
    {
        //在C#中,所有的异常都是Exception的子类
        #region
        try
        {
            int[] arr = new int[3];
            arr[4] = 01;
        }
        //来捕获DivideByZeroException
        catch (DivideByZeroException e)
        {
            Console.WriteLine("发生了除0异常!");
        }
        //来捕获IndexOutOfRangeException这个异常
        catch (IndexOutOfRangeException e)
        {
            Console.WriteLine("发生了数组越界的异常!");
        }
        catch(Exception e)
        {
            Console.WriteLine("程序捕获到了异常!");
        }

        Console.WriteLine("程序结束了!");
        

        #endregion
		//产生自定义的异常,并将它捕获
        try
        {
            Person.ScoreExceptionDemo();
        }
        catch(ScoreException exception)
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine(exception.Message);
        }
        

    }

}
//自定义异常:继承自Exception类,写一个自己的类即可
class ScoreException : Exception 
{ 
    //如果希望自定义的异常有描述信息,只需要写一个有参构造即可
    public ScoreException(string message) :  base(message){    }
}

class Person
{
    //设计一个会产生异常的方法
    public static void ScoreExceptionDemo()
    {
        //实例化一个异常对象
        ScoreException exception = new ScoreException("哈哈哈,这个是我自定义的异常");

        //抛出异常
        throw exception;
    }
}
原文地址:https://www.cnblogs.com/wei1349/p/12918513.html