基于Windows的未处理异常捕获及处理方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 实现 思 想
本 文 基 于 Wi n d o w s系 统 .为 Wi n d o w s系统 下 的 应
收 稿 日期 : 2 0 1 3 —0 6 —1 3 修稿 E 1 期: 2 0 1 3 — 0 7 —1 3
作 者 简介 : 洪承 煜 ( 1 9 8 0 一) , 男, 硕 士研 究 生 , 工程 师 , 从 事 领 域 为地 球 物 理软 件 研 发 工作
\
、
文章 编号 : 1 0 0 7 — 1 4 2 3 ( 2 0 1 3 ) 2 2 — 0 0 4 2 — 0 5
D OI : 1 0 . 3 9 6 9  ̄ . i s s n . 1 0 0 7 — 1 4 2 3 . 2 0 1 3 . 2 2 . 0 1 1
基于 Wi n d o ws的未处理异 常捕获及处理方法
洪 承 煜 . 杨 尚琴
( 中国 石 化 石 油 物 探技 术 研 究 院 ,南 京 2 1 0 0 1 4 )
摘
要 :在 应 用程 序 中 , 异 常 随 时 随地 都 可 能会 发 生 , 通 常在 c+ +中 处理 方 法是 使 用 t r y / c a t c h块 来
产 生和 捕 获异 常 但 在 现 实的 软 件 开 发 中 . 总会 忽 略 掉 一 些 没 有 使 用 t r y / c a t c h块 的 地 方 及
成 系统 崩 溃 在 应 用 程 序 运 行 的 实 际 环境 下 .我 们 经 常 见 到 的 崩 溃 产 生 的 原 因有 很 多 . 例 如 非 法 内存 访 问 ( 数 组 越 界 等) 、 除零 等 。 本 文 通 过 尝试 寻 找 当前 灾 难 发 生 时 , 应 用 程 序 的 前 一 个 正 常 运 行 点 .并 尽 量 把 其 恢 复 到 此 运 行 点. 如果 不 能 则 会 记 录下 故 障 信 息 . 并重启 . 将 系 统 崩
溃起 到部 分 自恢 复和 故 障信 息记 录 的作 用
关键词 : 异 常 处理 ;软件 崩 溃 ; 软 件 自恢 复
0 引
言
用 程 序 运 行 .提 供 一 个 通 用 的异 常 捕 获 及 处 理 的动 态 运行 库 需 要 此 异 常 捕 获 及 处理 功 能 的 应用 程 序 . 只要 在程序中调用相应 的 A P I 接 口 .起 到 安 装 此 功 能 到 当 前 应 用 程 序 的 目的 那 么 当此应 用 程 序 发 生异 常 时 , 就
D WO RD n p= p Ex e c p t i o n I n f 0 一 > E x c e p t i o n Re c o r d 一 > Nu m。 b e r P a r a me t e r s ;
t r y / c a t c h块 中 忽略 掉 的异 常类 型 . 这些异常 中。 有 些会 造 成 程 序 崩 溃 。为 了解 决这 种 崩 溃 , 提 出一 种基 于 W i n d o ws 系统 下 的 异 常 捕 获 及 处 理 方 法 . 这种 方 法 可 以 对 软 件 运 行 中的 崩
应 用 程 序在 正 常 的 操 作 及 运 行 环 境 下 .一 般 能 够
正常地运行而不会 出现故 障 : 但 在现实应用程序 中 . 不
可 能 一 直 按 照 我 们 预先 设 想 的 路 径 运 行 .会 出现 很 多
的未知路径 . 这 会 造成 各种 异 常情 况 的 出现 因 此应 用 程 序 对 于 异 常 的处 理 就 显 得 尤 其 重 要 . 即我 们 会 使 用 t r y / c a t c h 块 来 产 生 和捕 获 异 常 . 也 会 使 用 判 断语 句来 消 除 异 常 情 况 的 出现 但 百 密 必 有 一 疏 . 由于 各 种 各 样 的 原因. 很 多 的应 用 程 序 还 是 会 有 一 些 意 外 情 况 发 生 . 且
t i 0 n F i h e r 安装 的用户 自定异 常处理例程 .该 函数使应
用 程 序 能 够 设 置 进 程 自己 的异 常处 理 例 程 .相 当于 在
溃的可能性降到最低 百度文库
异常处理例程链 的顶端链接 了 自己的处理例程 当调
用 了这 个 函数 后 .如 果 一 个 非 D e b u g 模 式 下 的 进 程 有 异常产生 时 . 未处理异常将 调用参数 l p T o p L e v e l E x c e p 一
没 有 考 虑 并 进 行 处 理 过 而 这 些 意 外 情 况 . 严 重 时 会 造
会有本文设计 的处理模块统一处 理 . 并记录故 障信息 .
尝 试恢 复 , 恢 复 不成 功 会 重 新 启 动 应 用 程 序 。
2 异 常 处 理 类 设 计 与 实 现
2 . 1 一 个 进 程 相 关 的 异 常 处 理 函数
@ 现 代 计 算 机 2 0 1 3 . 0 8 上
\ \ \
.
p P r e v F i l t e r = S e t Un h a n d l e r d E x c e p t i o n F i h e r
_
i f l e . Wr i t e S t r i n g ( s l t e m ) ;
在 Wi n d o W s 系统 下 .用 户 可 定 义 的异 常 处 理 类 型 有两种 . 一种是线程相关的 . 另 一种 是进 程 相关 的_ l l 。由 于 本 文 研 究 的 目的 是 对 应 用 程 序 最 终 没 捕 获 的 异 常 进 行处理 . 所 以选 择 了 一 个 进 程 相 关 的异 常处 理 例 程 . 而 在 Wi n d O W s的系 统 异 常 处 理 顺 序 中 . 提 供 了 当 异 常 没 有 处理的时候 , 系统就会调用使 用 S e t U n h a n d l e d E x c e p .