码迷,mamicode.com
首页 > Windows程序 > 详细

C#高级编程八十二天----用户自定义异常类

时间:2015-08-10 22:19:26      阅读:200      评论:0      收藏:0      [点我收藏+]

标签: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("输入一个05的数: ");

            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("我还是那个牛Xfinally ! ");            

            }

            Console.ReadKey();

        }

    }

    public class MyException : ApplicationException 

{

//public MyException (){}

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

 

        public override string Message

        {

            get

            {

                return base.Message;

            }

        }

    }

 

}

这里面自定义了异常类MyExceptionApplicationExceptioncatchMyException me)用户捕获自定义异常,catchException 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)

        { }

    }

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

C#高级编程八十二天----用户自定义异常类

标签:c#

原文地址:http://blog.csdn.net/shanyongxu/article/details/47404401

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!