用户自己定义异常类

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

 

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

用用脚趾头想想也明确,是为了定义咱们自己的异常,自己定义异常类继承自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. OpenCL学习笔记(一):摩尔定律,异构计算与OpenCL初印象

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld.  技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 关于摩尔定律: 摩尔定律19 ...

  2. TP-LINK路由器设置内网的一台电脑在外网可以远程操控

    1.[IP和MAC绑定]--[静态ARP绑定设置]对MAC和IP进行绑定 2.[转发规则]--[DMZ主机],选择启用并把刚才设置的内网IP填入 3.直接访问路由器的外网IP就可以直接访问绑定的MAC ...

  3. 前端读者 | 百度前端编码规范(JS)

    本文来自:百度FEX 1 前言 JavaScript在百度一直有着广泛的应用,特别是在浏览器端的行为管理.本文档的目标是使JavaScript代码风格保持一致,容易被理解和被维护. 虽然本文档是针对J ...

  4. js正则表达大合集【转载自:http://caibaojian.com】

    [注明原文链接吧]:http://caibaojian.com 1 用户名正则 //用户名正则,4到16位(字母,数字,下划线,减号) var uPattern = /^[a-zA-Z0-9_-]{4 ...

  5. 如何严格设置php中session过期时间 (转)

    如何严格限制session在30分钟后过期!1.设置客户端cookie的lifetime为30分钟:2.设置session的最大存活周期也为30分钟:3.为每个session值加入时间戳,然后在程序调 ...

  6. Java 中List 集合索引遍历与迭代器遍历

    package yzhou.iterator; import java.util.ArrayList; import java.util.HashSet; import java.util.Itera ...

  7. python抓取网页图片的小案例

    1.分析 ,要抓取的页面的信息以及对应的源码信息 blog.sina.com.cn/s/blog 93dc666c0101b1bj.html 2.代码模块: 导入正则表达的模块 导入url相关的模块 ...

  8. Codeforces Round #407 (Div. 2) D. Weird journey(欧拉路)

    D. Weird journey time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  9. Linux命令之head

    head [选项] [文件] head命令输出文件开头部分,默认情况下显示文件的头10行.如果指定多个文件,每个文件前都有一个标题,给出文件名.如果没有指定文件,或当文件为-时,读取标准输入. (1) ...

  10. 【动态规划】Round Subset

    CF837D. Round Subset Let's call the roundness of the number the number of zeros to which it ends. Yo ...