C#编程(八十二)---------- 用户自定义异常类

用户自定义异常类

前面已经说了不少关于异常的问题了,现在来给大家说一下自定义异常时咋个回事以及咋样.

 

为啥会出现自定义异常类呢?用用脚趾头想想也明白,是为了定义咱们自己的异常,自定义异常类继承自ApplicationException 

首先异常(Exception)分为两大类,一个是预定义的异常类,后者是用户自定义异常类时需要继承的类.

案例:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace 自定义异常类

{

    class Program

    {

        static void Main(string[] args)

        {

            //还是上一句的案例

            Console.WriteLine("输入一个0到5的数: ");

            try

            {

                //这句话你肯定也知道

                //不知道的话,你查看一下Parse的意思就明白了,别指望我啥都说到!

                int num = int.Parse(Console.ReadLine());

                if (num < 0 || num > 5)

                {

                    throw new MyException("你搞笑吗? 逗我呢?");

                }

            }

            catch (MyException ex)

            {

                Console.WriteLine(ex.Message);

            }

            catch (Exception ex)

            {

                Console.WriteLine(ex.Message);

            }

            finally

            {

                Console.WriteLine("我还是那个牛X的finally ! ");            

            }

            Console.ReadKey();

        }

    }

    public class MyException : ApplicationException 

{

//public MyException (){}

        public MyException(string message) : base(message) { }//这句话知道是干的吧?别和我说你忘了!!

 

        public override string Message

        {

            get

            {

                return base.Message;

            }

        }

    }

 

}

这里面自定义了异常类MyException:ApplicationException,catch(MyException me)用户捕获自定义异常,catch(Exception e)用于捕获一般异常,如果异常被第一个catch捕获,那么第二个catch将不会执行,直接执行finally中的语句。

 

 

下面说一下自定义的异常类通常要注意的以下几点:

1.如果你的异常类是需要写入文件的,如日志,则需要将异常类声明为可序列化的[Serializable]

2.要实现一个无参数的构造函数,因为可能会抛出无参数异常

3.实现一个包含message的构造函数

4.实现一个包含message以及内部异常类型的构造函数

5.添加自己的从错误识别数据成员

 

所以:一般情况下自定义的格式是这样的

    class MyException : ApplicationException

    {

        //这是无参构造函数,作用试试啊自己去看上面

        public MyException()

        { }

 

        public MyException(string message)

            : base(message)

        { }

 

        public MyException(string message, Exception inner)

            : base(message, inner)

        { }

    }

 

posted on   Sun‘刺眼的博客  阅读(2467)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示