异常处理流程小记
异常处理流程图
懒得折腾了,更新就挂,看图最靠谱;
已经写好Mermaid
的语法,准备输出流程图了,发现Hexo
的mermaid
插件已是多年前的产物,不兼容最新的版本,无奈只能用draw.io画了张图;
最稳妥的方案是根据官方文档定义 mermaid 语法块,而不是使用 markdown 语法,例如:
1 | {% mermaid graph TD %} |
graph TD A["系统发现产生了一个异常"] --> B{"程序是否正在被调试"} B --> |"是,程序正在被调试"| C{"权限转给调试器,并判断调试器是否忽略了异常"} C --> |"是,忽略了"| D{"程序是否安装 SEH"} D --> |"是,安装了"| E{"SEH 是否解决异常"} E --> |"是,解决了"| F["程序可以继续正常运行"] B --> |"否,程序没有被调试"| D C --> |"否,未忽略,但未能解决异常"| G["系统默认异常处理流程"] D --> |"否,未安装"| G E --> |"否,未解决"| G
图片镇楼:
总结一下上图,共有 7 种流程:
1.系统发现异常
-> 是否调试状态
-> 是
-> 交给调试器处理
-> 调试器是否忽略异常
-> 是
-> 检查是否安装 SEH
-> 已安装
-> 是否解决异常
-> 已解决
-> 程序继续运行
;
2.系统发现异常
-> 是否调试状态
-> 是
-> 交给调试器处理
-> 调试器是否忽略异常
-> 是
-> 检查是否安装 SEH
-> 已安装
-> 是否解决异常
-> 未解决
-> 系统默认异常处理流程
;
3.系统发现异常
-> 是否调试状态
-> 是
-> 交给调试器处理
-> 调试器是否忽略异常
-> 是
-> 检查是否安装 SEH
-> 未安装
-> 系统默认异常处理流程
;
4.系统发现异常
-> 是否调试状态
-> 是
-> 交给调试器处理
-> 调试器是否忽略异常
-> 否
-> 是否解决异常
-> 否
-> 系统默认异常处理流程
;
5.系统发现异常
-> 是否调试状态
-> 否
-> 检查是否安装 SEH
-> 已安装
-> 是否解决异常
-> 已解决
-> 程序继续运行
;
6.系统发现异常
-> 是否调试状态
-> 否
-> 检查是否安装 SEH
-> 已安装
-> 是否解决异常
-> 未解决
-> 系统默认异常处理流程
;
7.系统发现异常
-> 是否调试状态
-> 否
-> 检查是否安装 SEH
-> 未安装
-> 系统默认异常处理流程
;