用户本身界说异常类
前面已经说了不少关于异常的问题了,如今来给大家说一下本身界说异常时咋个回事以及咋样.
?
为啥会呈现本身界说异常类呢?
用用脚趾头想想也明确,是为了界说咱们本身的异常,本身界说异常类担任自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)