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#编程(八十二)---------- 用户自定义异常类的更多相关文章
- python第五十二课--自定义异常类
myexception.py ''' 实现自定义异常类: ''' class MyException(Exception): def __init__(self,msg): super().__ini ...
- “全栈2019”Java第八十二章:嵌套接口能否访问外部类中的成员?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- OpenCV2计算机编程手册(二)基于类的图像处理
1. 在算法设计中使用策略(Strategy)模式 策略设计模式的目标是将算法封装在类中.因此,可以更容易地替换一个现有的算法,或者组合使用多个算法以拥有更复杂的处理逻辑.此外,该模式将算法的复杂度隐 ...
- (八十二)c#Winform自定义控件-穿梭框
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- java 面向对象编程 --第十二章 JDK常用类
1. 系统类 java.lang包 System类 sys.out;sys.exit;sys.gc; sys.currentTimeMillis();----得到从1970-01-01到当前时间 ...
- 通过Socket实现TCP编程(十二)
原文链接:https://www.cnblogs.com/hysum/p/7531529.html Socket通信 : TCP协议是面向对象连接.可靠的.有序的,以字节流的方式发送数据. 基于TCP ...
- Android IOS WebRTC 音视频开发总结(八十二)-- VP8对VP9,质量还是码率?
本文主要介绍VP9(我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blacke ...
- C#高级编程五十四天----Lookup类和有序字典
Lookup类 Dictionary<Tkey,TValue>仅仅为每一个键支持一个值.新类Lookup<Tkey,TValue>是.NET3.5中新增的,它类似与Dictio ...
随机推荐
- VSCode配置python调试环境
VSCode配置python调试环境 很久之前的一个东东,翻出来看看 VSCode配置python调试环境 * 1.下载python解释器 * 2.在VSCode市场中安装Python插件 * 4.在 ...
- windows10+mysql8.0.11zip安装
准备: MySQL8.0 Windows zip包下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip 环境: ...
- Github之协同开发
一.协同开发 1.引子:假如三个人共同开发同一份代码,每个人都各自安排了任务,当每个人都完成了一半的时候,提交不提交呢? 要提交,提交到dev吗,都上传了一半,这样回家拿出来的代码根本跑不起来.所以, ...
- BOM下的属性和方法---上
-------------BOM------------------------------------------------ 三个系统对话框 浏览器可以通过alert().confirm()和 ...
- JavaScript错误:Maximum call stack size exceeded错误
错误的表面意思是,因为递归次数太多而内存溢出, 当然引起溢出的原因很多 找了下问题来源,发现引用了两个版本的jquery,在layout.cshtml母模块页中和视图中都引用了jq.导致循环调用,从而 ...
- 《JavaScript 高级程序设计》第三章:基本概念
目录 语法 标识符 严格模式 关键字 保留字 变量 数据类型 运算符 表达式与语句 语法 "语法"指的是一门语言的书写风格,JavaScript 的语法风格很类似于 C 以及 Ja ...
- B 找规律
Description 对于正整数n,k,我们定义这样一个函数f,它满足如下规律f(n,k=1)=-1+2-3+4-5+6...nf(n,k=2)=-1-2+3+4-5-6...nf(n,k=3)=- ...
- mongosync同步1,oplog同步会读取其他集合同步
使用mongosync同步数据 注意: 我下面的这个mongodb版本较低(3.2.16), 还可以用这个工具来同步数据.工具不支持更高版本的mongodb了. 使用方法: https://g ...
- Codeforces 1000F One Occurrence 主席树|| 离线+线段树
One Occurrence 为什么我半年前这么菜呀, 这种场只A三题... 我们在主席树 || 线段树上维护每个数的右边和它一样的数在哪里, 然后就变成了区间求最大值. 注意加进去的时候要把它右边一 ...
- windows下的python环境搭建(python2和python3不兼容,python2用的多)
Windows平台下搭建python开发环境 以下为在 Window 平台上安装 Python 的简单步骤: 打开WEB浏览器访问http://www.python.org/download/ 在下载 ...