[发明专利]一种异常捕获方法、装置以及终端有效
申请号: | 201910361565.5 | 申请日: | 2019-04-30 |
公开(公告)号: | CN110175101B | 公开(公告)日: | 2023-05-26 |
发明(设计)人: | 付强;王慧;高学智 | 申请(专利权)人: | 北京百度网讯科技有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 北京英赛嘉华知识产权代理有限责任公司 11204 | 代理人: | 王达佐;马晓亚 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 异常 捕获 方法 装置 以及 终端 | ||
本发明实施例提出一种异常捕获方法、装置和终端,所述方法包括:创建拦截异常的应用程序初始化入口;在拦截异常的应用程序初始化入口中,创建线程异常的捕获机制;当发生线程异常时,利用线程异常的捕获机制进行异常捕获,使应用程序正常运行。利用线程异常的捕获机制进行异常捕获,应用程序不会崩溃退出,提升了用户在使用应用程序的体验。同时,保证了用户的数据不会损失,不影响用户操作应用程序。
技术领域
本发明涉及计算机技术领域,尤其涉及一种异常捕获方法、装置以及终端。
背景技术
用户在使用手机等移动终端的应用程序时,发生了没有被程序捕获的运行时异常,导致应用程序崩溃,影响用户操作数据。例如,常见的空指针异常和指针越界异常,其中,空指针异常是指调用一个为空的对象的方法,指针越界异常是指获取超过一个长度为n的数组的第n+1条数据时发生的越界异常。
在某个应用程序捕获运行时异常,目前普遍采用如下两种方案来解决:第一,在业务代码使用异常捕获机制(try/catch机制),能够在代码发生异常时,进行捕获,但是这对程序员的要求非常高,要对所有可能会发生运行时异常的代码块都增加try/catch机制,如果未加try/catch的代码块发生了运行时异常,会造成系统崩溃,应用程序提示应用停止运行并退出。第二,在应用程序初始化启动时,全局设置捕获全局异常程序(Thread UncaughtException Handler),全局获取异常事件,然而,只能拦截子线程的异常,无法拦截主线程发生的异常。如果是主线程发生的异常,应用程序同样会直接崩溃退出,并且发生未捕获的异常时数据也不会被保留,给用户造成了非常不好的体验。
发明内容
本发明实施例提供一种异常捕获方法、装置以及终端,以解决现有技术中的一个或多个技术问题。
第一方面,本发明实施例提供了一种异常捕获方法,包括:
创建拦截异常的应用程序初始化入口;
在所述拦截异常的应用程序初始化入口中,创建线程异常的捕获机制;
当发生线程异常时,利用所述线程异常的捕获机制进行异常捕获,使应用程序正常运行。
在一种实施方式中,创建线程异常的捕获机制,包括:
创建应用程序线程异常的捕获机制,包括:
全局设置系统默认的捕获全局异常程序替换成自定义的异常处理程序;
当所述捕获全局异常程序拦截到系统回调的异常对象时,判断所述系统回调的异常对象是主线程异常还是子线程异常;
若所述系统回调的异常对象是所述主线程异常,则在消息循环处的代码块中增加异常捕获机制,得到所述应用程序线程异常的捕获机制。
在一种实施方式中,当发生线程异常时,利用所述线程异常的捕获机制进行异常捕获,包括:
在消息队列轮询过程中,执行具有所述异常捕获机制的代码块,对所述主线程异常进行捕获。
在一种实施方式中,创建线程异常的捕获机制,还包括:
创建活动组件的生命周期异常的捕获机制,包括:
控制活动组件的生命周期的系统对象替换为继承该系统对象的自定义对象,来控制所述活动组件的生命周期的调用;
在所述活动组件的生命周期的调用处的代码块中增加异常捕获机制,得到所述活动组件的生命周期的捕获机制。
在一种实施方式中,当发生线程异常时,利用所述线程异常的捕获机制进行异常捕获,包括:
若所述活动组件的生命周期发生异常,执行具有所述异常捕获机制的代码块,对所述活动组件的生命周期异常进行捕获。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京百度网讯科技有限公司,未经北京百度网讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910361565.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种存储盘故障预测方法及预测系统
- 下一篇:一种信息管理系统