结构化异常处理(三)系统级异常和应用程序级异常

一、系统级异常

1.准去的说,.NET平台引发的一场应被称为系统异常。这些异常被认为是无法修复的致命错误。

2.系统异常直接派生自名为System.SystemException的基类,该基类派生自System.Exception。

SystemException除了一组自定义的构造函数不添加任何功能。

public class SystemException :  Exception

{

  //各种构造函数

}

3.当一个异常类型派生自System.SystemException时,我们就能够判断引发该异常的实体是.NET运行库而不是正在执行的程序库代码。

可以通过is关键字来验证这个结论:

NullReferenceException nullRefEx = new NullReferenceException();
Console.WriteLine("NullREferenceException is a SystemException? : {0}", nullRefEx is SystemException);

二、应用程序级异常
1.自定义异常应当派生自System.ApplicationException类型:

public class ApplicationException : Exception

{

  //各种构造函数

}

就像系统异常一样,应用程序异常并不在一组构造函数外再定义其他任何成员。

2.从功能上讲System.ApplicationException的唯一目的就是标识出错误的来源。

当读者处理一个派生自System.ApplicationException的异常时,可以设想异常是由正在执行的应用程序代码库引发的,而不是由.NET基础类库或.NET运行时引擎引发的。

结构化异常处理(三)系统级异常和应用程序级异常

时间: 2024-08-29 10:54:42

结构化异常处理(三)系统级异常和应用程序级异常的相关文章

结构化异常处理(五)处理多个异常

一.多个catch块 在最简单的情形下,一个try块有一个catch块.但是在现实中,你常常会遇到包含try块的语句能够触发许多可能发生的异常的情形. 1.接之前的例子修改,假定在用户传入一个无效参数(比如小于0的值)的情况下,修改Car的Accelerate()方法还会引发一个基础类库定义的异常ArgumentOutOfRangeException. 该异常类的构造函数接收的第一个字符串参数为错误参数的名称,然后是描述该错误的信息. 代码: 1 public void Accelerate(i

结构化异常处理(二):配置异常的状态

一.TargetSite属性(public MethodBase TargetSite { get; }) System.Exception.TargetSite属性帮助我们了解引发某个异常的方法的各种信息.输出TargetSite的值将显示返回值类型.方法名称.引发异常方法的参数. 它不是只返回字符串,而是返回一个强类型的System.Reflection.MethodBase对象. 1 Console.WriteLine("Member name: {0}", e.TargetSi

深入研究 Win32 结构化异常处理(好多相关文章)

摘要 就像人们常说的那样,Win32 结构化异常处理(SEH)是一个操作系统提供的服务.你能找到的所有关于 SEH 的文档讲的都是针对某个特定编译器的.建立在操作系统层之上的封装库.我将从 SEH 的最基本概念讲起. Matt Pietrek 著董岩 译Victor 转载自 Xfocus 并整理 在所有 Win32 操作系统提供的机制中,使用最广泛的未公开的机制恐怕就要数结构化异常处理(structured exception handling,SEH)了.一提到结构化异常处理,可能就会令人想起

结构化异常处理系列

最近在项目中看到了许多自定义异常类,就想把它搞明白. 想知道为什么要这样处理?这样处理的优点是什么?自己怎么常见自己需要的自定义异常类? C#结构化异常处理是将程序中出现的错误的名称.消息和其他有用的信息都打进一个定义明确的包内. 构建一个强类型的自定义异常,这样在程序中对异常处理时就可以根据不同问题具有针对性的使用异常类,这样使用起来也更加明了,一看到就知道这里处理的是什么异常,一目了然. 下面就将学习笔记放在这里,希望大家多多指点: 结构化异常处理(一)概述 结构化异常处理(二)配置异常的状

深入研究 Win32 结构化异常处理(作者博客有许多SEH的研究文章)

摘要 就像人们常说的那样,Win32 结构化异常处理(SEH)是一个操作系统提供的服务.你能找到的所有关于 SEH 的文档讲的都是针对某个特定编译器的.建立在操作系统层之上的封装库.我将从 SEH 的最基本概念讲起. Matt Pietrek 著董岩 译Victor 转载自 Xfocus 并整理 在所有 Win32 操作系统提供的机制中,使用最广泛的未公开的机制恐怕就要数结构化异常处理(structured exception handling,SEH)了.一提到结构化异常处理,可能就会令人想起

第23章 SEH结构化异常处理(1)

23.1 基础知识 23.1.1 Windows下的软件异常 (1)中断和异常 ①中断是由外部硬件设备或异步事件产生的 ②异常是由内部事件产生的,可分为故障.陷阱和终止三类. (2)两种异常处理机制:SEH和VEH(WindowsXP以上新引进) (3)结构化异常处理(SEH)是Windows操作系统提供的强大异常处理功能.而Visual C++中的__try{} __finally{}和__try{} __except{}结构本质上是对Windows提供的SEH的封装. 23.1.2 SEH的

第23章 SEH结构化异常处理(2)

23.2 编译器层面对系统SEH机制的封装 23.2.1 扩展的EXCEPTION_REGISTRATION级相关结构:VC_EXCEPTION_REGISTRATION (1)VC_EXCEPTION_REGISTRATION结构 struct VC_EXCEPTION_REGISTRATION { VC_EXCEPTION_REGISTRATION* prev; //前一个结构体的指针 FARPROC handler; //永远指向_exception_handler4回调函数 scopet

解析结构化异常处理(SEH)(第二部分)

书接上一篇:http://www.cnblogs.com/ONDragon/p/6855174.html 虽然这个异常回调机制很好,但它并不是一个完美的解决方案.对于稍微复杂一些的应用程序来说,仅用一个 函数就能处理程序中任何地方都可能发生的异常是相当困难的.一个更实用的方案应该是有多个异常处理例程,每个例程针对程序中的一部分.实际上,操作系统提 供的正是这个功能. 还 记得系统用来查找异常回调函数的EXCEPTION_REGISTRATION结构吗?这个结构的第一个成员,称为prev,前面我们

[转载]深入解析结构化异常处理

尽管以前写过一篇SEH相关的文章<关于SEH的简单总结>, 但那真的只是皮毛,一直对Windows异常处理的原理似懂非懂, 看了下面的文章 ,一切都豁然开朗. 1997年文章,Windows技术的根一直没变:http://www.microsoft.com/msj/0197/exception/exception.aspx Matt Pietrek 著 董岩 译 在Win32操作系统提供的所有功能中,使用最广泛而又没有公开的恐怕要数结构化异常处理(Structured Exception Ha