用户自己定义异常类

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

 

为啥会出现自己定义异常类呢?

用用脚趾头想想也明确,是为了定义咱们自己的异常,自己定义异常类继承自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)

        { }

    }

 

C#高级编程八十二天----用户自己定义异常类的更多相关文章

  1. C++面向对象高级编程(八)模板

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. 这节课主要讲模板的使用,之前我们谈到过函数模板与类模板 (C++面向对象高级编程(四)基础篇)这里不再说明 1.成员模板 成员模板:参数为tem ...

  2. C#高级编程八十一天----捕获异常

    捕获异常 前面主要说了关于异常的一些基础和理论知识,没有进入到正真的异常案例,这一讲通过几个案例来描写叙述一下异常的捕获和处理. 案例代码: using System; using System.Co ...

  3. Unix环境高级编程(八)进程关系

    本章看后给人似懂非懂的感觉,主要是不知道实际当中如何去使用.通过前面几章的学习,每个进程都有一个父进程,当子进程终止时,父进程得到通知并取得子进程的退出状态.先将本章基本的知识点总结如下,日后再看时候 ...

  4. C#高级编程八十三天----程序集的含义

    程序集的含义 一.程序集是包括一个或多个类型定义文件和资源文件的集合.它同意我们分析可重用类型的逻辑表示和物理表示. 相当于你定义了一个项目XXProject,项目存在非常多文件(类,窗口,接口,资源 ...

  5. C#高级编程五十二天----有序列表

    有序列表 假设须要基于对全部集合排序,就能够使用SortedList<TKey,TValue>类.这个类依照键给元素排序.这个集合中的值和键都能够使用随意类型. 以下的样例创建了一个有序列 ...

  6. C#高级编程笔记 (1至6章节)数组,类/方法/泛型

    2.3变量 var 类型推断 type 类的分类 如:type nametype = name.GetType(); //取变量name的类型 const 常量  const int painame ...

  7. (八) 一起学 Unix 环境高级编程 (APUE) 之 信号

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  8. 多线程 用户级线程和内核级线程 from C++多核高级编程

    转 http://book.51cto.com/art/201006/206946.htm 6.1.1 用户级线程和内核级线程 2010-06-21 20:37 齐宁/董泽惠 译 清华大学出版社 字号 ...

  9. (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

随机推荐

  1. Gas Station——又是一道经典问题

    There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...

  2. 02 java 基础:java 文件名与类名关系 CLASSPATH

    java 类修饰符:通常情况下使用 public 修饰,此时,java 强制要求 .java 文件名需与该 public 修饰类名一致,否则无法编译通过.如若没有加修饰符,文件名与类名可无任何关联. ...

  3. (1)ansible基本配置

    1)ansible安装 yum install epel-release -y yum install ansible -y 2)ansible语法 语法: ansible <host-patt ...

  4. msyql安装

    1.安装msyql yum install -y ncurses-devel automake autoconf bison libtool-ltdl-devel cd /soft wget http ...

  5. 归并排序(MergeSort)

    原帖:http://blog.csdn.net/magicharvey/article/details/10192933 算法描述 归并排序(MergeSort)是采用分治法的一个非常典型的应用.通过 ...

  6. ZUFEOJ 2147 07染色带谜题

    2147: 07染色带谜题 时间限制: 1 Sec  内存限制: 128 MB提交: 170  解决: 21[提交][状态][讨论版][Edit] [TestData] 题目描述 现在给你一个长为N的 ...

  7. git add . 的时候遇到warning: LF will be replaced by CRLF in ...... 解决办法

    输 入 git add . 后出现 warning: LF will be replaced by CRLF in ...... The file will have its original lin ...

  8. CUPOJ6242: LHC的二进制升级版

    6242: LHC的二进制升级版 时间限制:1秒 内存限制:128MB Special Judge 提交:6 正确:3 题目描述 在发现了3的二进制特殊性质后,LHC认为形如1.3.7.15..... ...

  9. shell 文件个数 vs 文件夹个数

    文件个数 ls -l |grep "^-"|wc -l 文件夹个数 ls -l |grep "^d"|wc -l

  10. Rxjava与Retrofit的使用

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha ---- -----