[发明专利]异常处理方法、远程泊车辅助系统及计算机存储介质有效
| 申请号: | 202011239679.1 | 申请日: | 2020-11-09 |
| 公开(公告)号: | CN112445642B | 公开(公告)日: | 2023-05-16 |
| 发明(设计)人: | 白勍 | 申请(专利权)人: | 浙江吉利控股集团有限公司;宁波吉利汽车研究开发有限公司 |
| 主分类号: | G06F11/07 | 分类号: | G06F11/07 |
| 代理公司: | 上海波拓知识产权代理有限公司 31264 | 代理人: | 孙燕娟 |
| 地址: | 310051 浙江*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 异常 处理 方法 远程 泊车 辅助 系统 计算机 存储 介质 | ||
1.一种异常处理方法,其特征在于,包括:
对进程和工作线程依次初始化后,在所述工作线程内部运行C语言异常处理原语;
根据所述工作线程确定对应的异常栈链列表,在所述异常栈链列表创建异常帧以存储异常;
调用抛出异常帧的函数以捕获异常,处理所述异常后清除所述异常帧;
所述对进程和工作线程依次初始化,包括:
对内存池初始化;
调用异常环境管理器创建全局线程互斥对象以及全局map对象,初始化所述全局map对象;
在当前进程创建工作线程;
在所述工作线程调用所述异常环境管理器进入线程锁,创建异常环境上下文对象和异常栈链列表;
创建map结构体对象,所述map结构体对象用于存储异常状态节点;
初始化所述map结构体对象。
2.根据权利要求1所述的异常处理方法,其特征在于,所述map结构体对象为红黑树结构,所述map结构体对象的键值为所述工作线程的名称,所述map结构体对象的取值为所述工作线程的上下文对象,所述上下文对象中包括所述异常状态节点。
3.根据权利要求1所述的异常处理方法,其特征在于,所述根据所述工作线程确定对应的异常栈链列表,在所述异常栈链列表创建异常帧以存储异常,包括:
根据所述工作线程的名称获取异常处理上下文对象;
在所述异常处理上下文对象中查找输入异常状态节点;
若存在输入异常状态节点,且所述输入异常状态节点等于当前异常状态节点,则进入线程锁,初始化当前异常状态节点后,离开所述线程锁;
若不存在输入异常状态节点,则进入线程锁,创建并初始化异常帧,在所述异常帧中创建异常状态节点,将所述异常状态节点加入所述异常栈链列表后,离开所述线程锁。
4.根据权利要求3所述的异常处理方法,其特征在于,所述调用抛出异常帧的函数以捕获异常,包括:
判断所述异常帧的当前异常状态节点是否存在且所述异常帧为已尝试和正在捕获状态;
若是,则继续处理下一异常状态节点;
若否,则打印所述异常栈链列表中的所有异常帧,并对所述工作线程和所述进程依次反初始化。
5.根据权利要求4所述的异常处理方法,其特征在于,所述调用抛出异常帧的函数以捕获异常,还包括:
若所述异常帧的当前异常状态节点存在且所述异常帧为已抛出状态,则根据所述异常帧的跳转值进行逻辑跳转;
若所述异常帧的当前异常状态节点存在且所述异常帧不为已抛出状态,则打印所述异常栈链列表中的所有异常帧,并对所述工作线程和所述进程依次反初始化。
6.根据权利要求3所述的异常处理方法,其特征在于,所述清除所述异常帧,包括:
若所述异常帧的异常状态节点存在且所述异常帧为已尝试和已捕获状态,则进入线程锁,删除当前异常状态节点后,离开所述线程锁;
若所述异常帧的异常状态节点存在且所述异常帧不为已捕获状态,则继续判断下一异常状态节点;
若所述异常帧的异常状态节点存在且所述异常帧为已尝试和正在捕获状态,则将当前异常状态节点的内容赋值给下一异常状态节点,删除当前异常状态节点后,离开所述线程锁;
若所述异常帧的异常状态节点不存在,则打印所述异常栈链列表中的所有异常帧,并对所述工作线程和所述进程依次反初始化。
7.根据权利要求4至6任一所述的异常处理方法,其特征在于,所述对所述工作线程和所述进程依次反初始化,包括:
调用异常环境管理器进入线程锁;
删除所述异常栈链列表和map结构体对象;
离开所述线程锁,所述工作线程结束运行;
删除所述全局map对象和所述全局线程互斥对象。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江吉利控股集团有限公司;宁波吉利汽车研究开发有限公司,未经浙江吉利控股集团有限公司;宁波吉利汽车研究开发有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011239679.1/1.html,转载请声明来源钻瓜专利网。





