C# 自定义异常的方法源码演示及说明
内容之余,把做工程过程中较好的内容段备份一下,下边内容是关于C# 自定义异常的方法演示及说明的内容,希望能对各位朋友有一些好处。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace ConsoleApplication3
{
{
	public PayOverflowException() { }
	public PayOverflowException(string message)
		: base(message) { }
	public PayOverflowException(string message, Exception inner)
		: base(message, inner) { }
}
internal class Employee
{
	public int ID { get; set; }
	public string Name { get; set; }
	public int CurrPay { get; set; }
	public Employee() { }
	public Employee(int id, string name, int currpay)
	{
		this.ID = id;
		this.Name = name;
		this.CurrPay = currpay;
	}
	public virtual void GiveBunus(int amount)
	{
		var pay = CurrPay;
		this.CurrPay += amount;
		if (CurrPay > 10000)
		{
			this.CurrPay = pay;
			var ex = new PayOverflowException("The employee's max pay should be no more than 10000.");
			throw ex;
		}
	}
}
class Program
{
	static void Main(string[] args)
	{
		var emp = new Employee(10001, "Yilly", 8000);
		try
		{
			emp.GiveBunus(3000);
		}
		catch (PayOverflowException ex)
		{
			Console.WriteLine("异常信息:{0}n发生于{1}类的{2}方法", ex.Message,
			                  ex.TargetSite.DeclaringType, ex.TargetSite.Name);
			try
			{
				var file = new FileStream(@"c:customerexception.txt", FileMode.Create);
				BinaryFormatter bf = new BinaryFormatter();
				bf.Serialize(file, ex);
				file.Close();
			}
			catch (Exception ex1)
			{
				var inner = new PayOverflowException(ex.Message, ex1);
				throw inner;
			}
		}
	}
}
}
值得注意的是:在实例化的时候调用的是PayOverflowException(stringmessage,Exceptioninner)构造函数,如果本程序如果有其他程序在调用的时候,可以通过.InnerExcetpion的Message属性进行查看内部异常。
C# 自定义异常的方法源码演示及说明的更多相关文章
- erlang下lists模块sort(排序)方法源码解析(一)
		
排序算法一直是各种语言最简单也是最复杂的算法,例如十大经典排序算法(动图演示)里面讲的那样 第一次看lists的sort方法的时候,蒙了,几百行的代码,我心想要这么复杂么(因为C语言的冒泡排序我记得不 ...
 - Java split方法源码分析
		
Java split方法源码分析 public String[] split(CharSequence input [, int limit]) { int index = 0; // 指针 bool ...
 - erlang下lists模块sort(排序)方法源码解析(二)
		
上接erlang下lists模块sort(排序)方法源码解析(一),到目前为止,list列表已经被分割成N个列表,而且每个列表的元素是有序的(从大到小) 下面我们重点来看看mergel和rmergel ...
 - getOrCreateEnvironment()方法源码探究
		
该方法目的是创建一个环境对象,并且根据环境类型,自动判断是创建web环境对象,还是标准非web环境对象. 首先该方法源于prepareEnvironment准备环境: 然后进入该方法源码: 可以发现: ...
 - TreeSet集合的add()方法源码解析(01.Integer自然排序)
		
>TreeSet集合使用实例 >TreeSet集合的红黑树 存储与取出(图) >TreeSet的add()方法源码 TreeSet集合使用实例 package cn.itca ...
 - invalidate和requestLayout方法源码分析
		
invalidate方法源码分析 在之前分析View的绘制流程中,最后都有调用一个叫invalidate的方法,这个方法是啥玩意?我们来看一下View类中invalidate系列方法的源码(ViewG ...
 - Linq分组操作之GroupBy,GroupJoin扩展方法源码分析
		
Linq分组操作之GroupBy,GroupJoin扩展方法源码分析 一. GroupBy 解释: 根据指定的键选择器函数对序列中的元素进行分组,并且从每个组及其键中创建结果值. 查询表达式: var ...
 - v8--sort 方法 源码 (1) 插入排序法
		
v8--sort方法源码中对于长度较短的数组使用的是插入排序法. 部分源码: function InsertionSort(a, from, to) { for (var i = from + 1; ...
 - Java线程状态、线程start方法源码、多线程、Java线程池、如何停止一个线程
		
下面将依次介绍: 1. 线程状态.Java线程状态和线程池状态 2. start方法源码 3. 什么是线程池? 4. 线程池的工作原理和使用线程池的好处 5. ThreadPoolExecutor中的 ...
 
随机推荐
- boost range  zhuan
			
Officialhttp://67.223.234.84/boost_doc/libs/range/doc/utility_class.html#sub_range http://blog.sina. ...
 - 使用CURL进行模拟登录
			
在信息采集的时候,要采集的站点可能需要登录,这样使用简单的采集方式(例如file_get_contents)就无法做到了,我们可以利用PHP的CURL扩展库来进行模拟登录,下面给出代码示例: < ...
 - M0内核的STM32实现比较精准的延时
			
#include "drv_delay.h"#include "core_cm0plus.h" //我的系统时钟设置为4MHz /*************** ...
 - linux c++ curl 根据IP地址获得当前网络的所在的地理位置
			
注意: 可能每个电脑的默认中文编码格式不同,有时会出现乱码,需要对返回内容进行编码转换,或者换成可指定编码格式的接口.如 搜狐IP地址查询接口(可设置编码):http://pv.sohu.com/c ...
 - @lazy注解处理循环注入问题
			
@Service public class A extends GenericBaseService { @Autowired private B b; } @Service public class ...
 - 积累的关于linux的安装卸载软件基本命令
			
Linux安装.卸载软件 在linux环境中,尤其是cenos中安装过一些软件,一般是二进制安装与源码安装,现小结一下linux中的安装与卸载. 一.通常Linux应用软件的安装包有三种: 1) ...
 - VC++封装的时间类
			
一.使用方法 首先要在工程中加入TimeNow.cpp和TimeNow.h文件 1.把.cpp与.h文件放在放在工程文件夹. 2.项目(progect)-->属性(properties)--&g ...
 - 激活WIN10系统
			
打开cmd slmgr /ipk VK7JG-NPHTM-C97JM-9MPGT-3V66T slmgr /skms kms.xspace.in slmgr /ato
 - git diff 与git format-patch 生成补丁包
			
git diff commit_id 会生成最后一次提交到目前修改过的内容补丁 git diff commit_id1 commit_id2 会生成两次提交之间修改过的内容补丁 git format- ...
 - Spring history&Design Philosophy 简单介绍~
			
SPRING框架的介绍和历史 Spring Framework是一个开源Java应用程序框架,最初是基于依赖注入(DI)和控制反转(IoC)的原理开发的. Spring Framework已经成长为控 ...