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)
{ }
}
C#高级编程八十二天----用户自己定义异常类的更多相关文章
- C++面向对象高级编程(八)模板
技术在于交流.沟通,转载请注明出处并保持作品的完整性. 这节课主要讲模板的使用,之前我们谈到过函数模板与类模板 (C++面向对象高级编程(四)基础篇)这里不再说明 1.成员模板 成员模板:参数为tem ...
- C#高级编程八十一天----捕获异常
捕获异常 前面主要说了关于异常的一些基础和理论知识,没有进入到正真的异常案例,这一讲通过几个案例来描写叙述一下异常的捕获和处理. 案例代码: using System; using System.Co ...
- Unix环境高级编程(八)进程关系
本章看后给人似懂非懂的感觉,主要是不知道实际当中如何去使用.通过前面几章的学习,每个进程都有一个父进程,当子进程终止时,父进程得到通知并取得子进程的退出状态.先将本章基本的知识点总结如下,日后再看时候 ...
- C#高级编程八十三天----程序集的含义
程序集的含义 一.程序集是包括一个或多个类型定义文件和资源文件的集合.它同意我们分析可重用类型的逻辑表示和物理表示. 相当于你定义了一个项目XXProject,项目存在非常多文件(类,窗口,接口,资源 ...
- C#高级编程五十二天----有序列表
有序列表 假设须要基于对全部集合排序,就能够使用SortedList<TKey,TValue>类.这个类依照键给元素排序.这个集合中的值和键都能够使用随意类型. 以下的样例创建了一个有序列 ...
- C#高级编程笔记 (1至6章节)数组,类/方法/泛型
2.3变量 var 类型推断 type 类的分类 如:type nametype = name.GetType(); //取变量name的类型 const 常量 const int painame ...
- (八) 一起学 Unix 环境高级编程 (APUE) 之 信号
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- 多线程 用户级线程和内核级线程 from C++多核高级编程
转 http://book.51cto.com/art/201006/206946.htm 6.1.1 用户级线程和内核级线程 2010-06-21 20:37 齐宁/董泽惠 译 清华大学出版社 字号 ...
- (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
随机推荐
- hdu 2955(概率转化,01背包)
Hot~~招聘——巴卡斯(杭州),壹晨仟阳(杭州),英雄互娱(杭州) (包括2016级新生)除了校赛,还有什么途径可以申请加入ACM校队? Robberies Time Limit: 2000/100 ...
- python读写hdf5及cdf格式文件
Python write and read hdf5 file http://stackoverflow.com/questions/20928136/input-and-output-numpy-a ...
- Mayavi入门
环境,win7/10 64位, python3.x 1,安装 Mayavi4.6 原装的pip下载奇慢,先更换一下源,豆瓣的更新要比清华的快 首先在window的文件夹窗口输入 : %APPDATA% ...
- AC日记——魔法森林 洛谷 P2387
魔法森林 思路: spfa水过(正解lct); 代码: #include <bits/stdc++.h> using namespace std; #define maxn 50005 # ...
- 使用css做图标
首先原理是: 请一步一步粘贴代码,慢慢品味.其实,很简单... 1.首先三角形的前身是一个普通的矩形-正方形||长方形?ok! <div class='box'></div> ...
- codeforces 360 B
B - Levko and Array 题目大意:给你你个长度为n的数列a,你最多改变k个值,max{ abs ( a[ i + 1] - a[ i ] ) } 的最小值为多少. 思路:这个题很难想到 ...
- lazarus安装
https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%201.6.4/ 下载这三个文 ...
- vue-music 关于基础组件 (Tab组件)
定义在项目的基础组类别的 tab组件中,定义一个tab切换数量的数组 和一个currentIndex 当前高亮索引 的props,当前高亮(active)的类等于currentIndex === ...
- python的版本会导致IBus设置(中文输入法)出错
最近在学习python,可是,发现我的输入法 IBus-pinyin ,不能用了, 现象: 发现 “首选输入法”,根本点击不进去IBus设置的窗口,想去设置输入法都不行, IBus设置的窗口: 原因是 ...
- leetcode104 Maximum Depth
题意:二叉树最大深度 思路:递归,但是不知道怎么回事直接在return里面计算总是报超时,用俩变量就可以A···奇怪,没想通 代码: int maxDepth(TreeNode* root) { if ...