用户自定义异常类

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

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

{ }

}

最新文章

  1. iOS学习系列-Apache服务器的配置
  2. 那些VisualStudio隐藏的调试功能
  3. 为sproto添加python绑定
  4. 图文详解YUV420, yuv格式2
  5. CountDownLatch和CyclicBarrier的区别
  6. 编写优质无错C程序秘诀!《经验谈》
  7. 【图论】Codeforces 711D Directed Roads
  8. Excel工作表 表名导出
  9. python之路 序列化 pickle,json
  10. java调用wkhtmltopdf生成pdf文件,美观,省事
  11. java虚拟机参数设置 jvm参数设置
  12. Maven部署项目到Tomcat
  13. 终于将 SQL Server 成功迁移至 MySQL8.0 啦!!!
  14. javascript入门篇(六、正则表达式)
  15. Linux命令:logout
  16. 《高性能SQL调优精要与案例解析》——10.4_SQL语句改写部分文档
  17. nodeJs 资料
  18. 检测到在集成的托管管道模式下不适用的 ASP.NET 设置
  19. c++流缓冲学习---rdbuf()
  20. hbase源码系列(十三)缓存机制MemStore与Block Cache

热门文章

  1. GitHub上README.md的简单介绍
  2. [java]用md5来判断两个文件是否完全相同
  3. 微信支付之JsApi支付
  4. Oracle 11g安装步骤以及Oracle11g创建表空间和用户,并授权
  5. vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)
  6. 如何将Request对象中的参数列表打印出来
  7. linux 终端上网设置
  8. python3 + selenium 运行过程中进行截图
  9. sql如何截取字符
  10. FFT 【JSOI2012】bzoj4332 分零食 (未解决)