[发明专利]对所引起的异常的通知有效
| 申请号: | 201080020348.7 | 申请日: | 2010-04-30 |
| 公开(公告)号: | CN102422261A | 公开(公告)日: | 2012-04-18 |
| 发明(设计)人: | A·J·帕多;G·康纳;M·M·马格鲁德;Y·林;J·C·施瓦茨 | 申请(专利权)人: | 微软公司 |
| 主分类号: | G06F9/06 | 分类号: | G06F9/06;G06F9/44;G06F9/30 |
| 代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 蔡悦 |
| 地址: | 美国华*** | 国省代码: | 美国;US |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 引起 异常 通知 | ||
背景
计算机程序通常包含两种类型的代码:实现程序的目标的指令,和包含用于从发生的不期望的条件或不寻常的条件恢复或响应于发生的不期望的条件或不寻常的条件的指令的出错处理代码。出错处理可以包括解决从因为文件不在所请求的位置而引起的文件打开失败到访问不属于该程序的存储器(例如,程序未分配的存储器或已经释放的存储器)的任何问题。软件异常是一种类型的出错通知范例。异常是在检测到在程序线程的正常执行中不期望的条件时引起的信号。许多代理可以检测不正确的条件并引起异常。对于在托管环境中运行的应用,可以由程序代码(或程序使用的库代码)、运行时引擎和应用调用的非托管代码引起异常。异常允许开发者快速且直接地写出用于正常情况的软件代码,且在预定义的区域中包含用于处理出错(例如,异常)的代码。使用异常,程序通常用“try”块包围一个指令块,且在异常条件发生时,程序离开try块并执行一个或多个有条件地执行的块。
在执行的线程上引起的异常跟随该线程通过本机代码和托管代码且跨越各应用域(例如,微软.NET AppDomain)。如果程序不处理异常,则异常通常被呈现给操作系统并被看作是未经处理的异常。如果程序理解导致异常发生的条件,则程序可以处理异常。异常表示在程序的执行期间广泛的不期望的条件。在程序被看作是逻辑堆栈层时,异常可以在各种级别发生。例如,操作系统可以提供异常(例如,结构化异常处理(SEH)),底层运行时可以提供异常(例如,C语言运行时或微软.NET公共语言运行时(CLR)),且程序本身可以提供由用来创建该程序的语言定义的异常(例如,C语言异常、微软.NET异常等等)。对于高级语言,环境可以将这些异常中的每一种包装成程序的语言所识别的一种或多种类型。例如,微软.NET将任何本机异常表示为从微软.NET异常类继承的特定托管异常。
软件已经变得如此复杂,以至于组件重用是常见的,且许多软件程序调用外部组件或在内部包括不是由程序作者写成或验证的组件(例如,通过静态链接)。例如,数据挖掘应用可以调用数据库用于建立到数据库的连接并响应于查询接收来自该数据库的数据。另外,程序可以包括与程序的主范例不同的全平台范例。例如,本机C++应用程序可以调用托管微软.NET软件类以执行某些动作。这样的复杂系统的任何部分可以包括系统的其他部分不预期或不处理的出错和异常。例如,如果本机应用调用托管代码,且托管代码碰到异常或其他故障,则可能损坏本机应用状态,或者本机应用可以终止,这是因为本机应用程序不知道或不被设计为处理该故障。相反,托管应用可以调用损坏该应用状态或经历某种其他故障的本机代码。
用于离线分析的关于异常的最相关的信息往往知道发生过异常。不幸的是,对于应用尤其是包括一个或多个第三方组件或插件的应用,难以检测每一异常并将关于异常的信息记入日志。例如,软件代码可以捕捉异常并(正确地或错误地)处理该异常,使得其他应用代码不可能检测到发生过异常。如果应用是在调试器中运行,则调试器通常在程序被允许处理异常之前给开发者提供所引起的异常的通知。然而,在正规消费者场景中,在调试器中运行应用是不实用的。
现今存在用于在正常的应用流之外处理异常的各种机制。作为一个示例,应用可以提供未经处理的异常过滤器,该未经处理的异常过滤器接收不另外被应用捕捉的任何异常。作为另一示例,微软Windows提供被称为Vectored Exception Handling(矢量化异常处理)的机制,在引起本机异常时,该机制允许程序员将过滤器添加到由OS执行的一系列过滤器。从托管代码勾取过滤器可以允许相似的功能。然而,这并不被推荐,且应用异常处理可以导致程序状态中的改变,这使得未经处理的异常过滤器难以记录关于异常的原因的足够的相关细节。将异常传递给程序的异常处理区域(通常是catch(捕捉)块或filter(过滤器)块)涉及执行大量工作的异常系统。程序代码不能在不接受异常供处理的情况下就检查该异常,这是在处理程序接收异常之前可以修改异常状态和程序状态的动作。
概述
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201080020348.7/2.html,转载请声明来源钻瓜专利网。





