C#复习(十三)异常_该用户还没想到昵称_新浪博客

      
  • 程序运行期间发生错误称为异常。在C# 中用类的形式将不正常的情况进行了封装和描述,描述不正常的类就叫做异常类。C#对所有描述问题的类进行共性的向上抽取,最终形成一个父类叫做Exception.
  • 分为SystemException和ApplicationException(用户自定义异常)。
  • 实现自定义异常类要继承ApplicationException。
    class MyException : ApplicationException
    {
        public MyException(string s):base(s)
        { 

        }
    }
    class Program
    {
        public void Show(int[] array, int index)
        {
            if (index > array.Length)
            {
                throw new IndexOutOfRangeException("索引越界");
            }
            if (index < 0)
            {
                throw new MyException("索引不能为负数");
            }
            Console.WriteLine(array[index]);
        }
        static void Main(string[] args)
        {
            Program p = new Program();
            int[] array = { 1, 2, 3, 4, 5 };
            p.Show(array, -2);
        }
    }
        C#复习(十三)异常
  • try-catch-finally:try块的代码是程序中可能出现错误的操作部分,一旦有异常则抛给catch;catch块的代码块用来处理各种错误的部分(可以有多个),必须正确排列捕获异常的catch子句,如果Exception之间存在继承关系,就应把子类的Exception放在前面的catch子句中;finally代码可以省略,且无论是否产生异常,finally块都会执行。
  • 当要catch自定义异常类时,需先抛出,才能捕获。
  • 有catch{}时,可以没有finally{},没有catch{}时,必须有finally{}
        static void Main(string[] args)
        {
            Program p = new Program();
            int[] array = { 1, 2, 3, 4, 5 };
            p.GetValueAndAverage(array, -1);
            Console.ReadLine();
        }
        public int GetValue(int[] array, int index)
        {
            if (index > array.Length)
            {
                throw new IndexOutOfRangeException("索引越界");
            }
            if (index < 0)
            {
                throw new MyException("索引不能为负数");
            }
            return array[index];
        }
        public void GetValueAndAverage(int[] array,int index)
        {    
            int sum = 0;
            float average = 0;
            float value = 0;
            for (int i = 0; i < array.Length; i++)
            {
                sum += array[i];
            }
            try
            {
                int length = array.Length;
                average = sum/length;
                value = GetValue(array, index);
            }
            catch (MyException myEx)
            {
                Console.WriteLine(myEx.Message);
            }
            catch (DivideByZeroException e)
            {
                Console.WriteLine(e.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                Console.WriteLine("Sum:" + sum);
                Console.WriteLine("Average:" + average);
                Console.WriteLine("Value:" + value);
            }
        }
       C#复习(十三)异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烫青菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值