一种容错处理方法、装置、终端及存储介质与流程

文档序号:15047133发布日期:2018-07-27 22:55阅读:111来源:国知局

本发明实施例涉及计算机容错处理技术,尤其涉及一种容错处理方法、装置、终端及存储介质。



背景技术:

随着互联网和移动终端的普及,越来越多的用户使用移动终端观看视频、搜索信息、购物和导航等。移动终端如智能手机、平板电脑在运行过程中,经常会出现应用的闪退、崩溃等问题。

现有技术中通过在移动终端应用中植入崩溃检测组件,当系统发生崩溃时,通过崩溃检测组件收集相关的崩溃信息,如代码片段信息、用户信息和设备信息,当移动终端应用再次启动时,接入网络并将该崩溃信息发送至服务平台供研发人员分析,最终通过发布新版本或补丁的方式解决崩溃问题。

上述解决应用崩溃的方式具有明显的滞后性,即应用崩溃后采取相应措施对移动终端应用进行修复或替换覆盖,无法预先避免应用的崩溃。



技术实现要素:

本发明提供了一种容错处理方法、装置、终端及计算机可读存储介质,实现了应用的稳定运行,避免了应用在运行过程中产生崩溃的问题,提高了系统执行效率。

第一方面,本发明实施例提供了一种容错处理方法,包括:

运行包含预设容错组件的应用程序;

在所述应用程序的运行过程中,对出现的异常事件进行捕获;

通过所述预设容错组件对所述异常事件进行容错处理以屏蔽异常事件。

第二方面,本发明实施例还提供了一种容错处理装置,包括:

异常事件捕获模块,用于在运行包含预设容错组件的应用程序过程中,对出现的异常事件进行捕获;

容错处理模块,用于通过所述预设容错组件对所述异常事件进行容错处理以屏蔽异常事件;

上报模块,用于在屏蔽异常事件之后,对用户信息、所述应用程序的代码片段信息以及设备信息进行收集;将收集到的信息进行上报。

第三方面,本发明实施例还提供了一种终端,所述终端包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现前述容错处理方法。

第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种容错处理方法,该方法包括:运行包含预设容错组件的应用程序;在所述应用程序的运行过程中,对出现的异常事件进行捕获;通过所述预设容错组件对所述异常事件进行容错处理以屏蔽异常事件。

本发明实施例提供的技术方案,解决了现有技术中在解决应用崩溃时的滞后性,实现了应用的稳定运行,避免了应用在运行过程中产生崩溃的问题,提高了系统执行效率。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1是本发明实施例一提供的容错处理方法的流程图;

图2是本发明实施例二提供的容错处理方法的流程图;

图3是本发明实施例三提供的容错处理方法的流程图;

图4是本发明实施例四提供的容错处理方法的流程图;

图5是本发明实施例五提供的容错处理方法的流程图;

图6是本发明实施例六提供的容错处理装置的结构框图;

图7是本发明实施例七提供的一种终端的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1是本发明实施例一提供的容错处理方法的流程图,本实施例可适用于对应用程序进行容错处理的情况,该方法可由计算设备如电脑、智能手机来执行,如图1所示,本实施例提供的具体方案如下:

s101、运行包含预设容错组件的应用程序。

本实施例中,该预设容错组件可嵌入到应用程序中,容错组件和原应用程序具备统一的调用接口,无需修改原有应用程序的功能代码。示例性的,在程序调用过程中,可通过在原应用程序的头文件中添加调用关系的方式对预设容错组件进行加载。

本实施例中,该预设容错组件可针对不同应用程序单独定制,还可以是对具备统一编程模式的一类程序进行容错。预设容错组件可由编程人员预先编辑,根据引发应用程序崩溃的原因,对应用程序进行针对性调整以避免引起异常和/或异常发生后进行屏蔽。

本实施例中,该预设容错组件的程序内容可根据不同崩溃事件进行自定义调整以解决多种崩溃问题。该预设容错组件本身可单独存在,当用户安装完毕一应用程序后,可选择是否安装该预设容错组件,当研发人员在研发应用程序过程中,也可借助于本实施例中的预设容错组件对研发过程中的的应用程序进行优化。本实施例中,完成预设容错组件的加载后,在运行包含预设容错组件的程序时,该预设容错组件中的各个功能模块会在应用程序运行过程中被相应调用。

s102、在所述应用程序的运行过程中,对出现的异常事件进行捕获。

本实施例中,该异常事件可以是引起应用程序崩溃,导致应用程序闪退或者计算设备死机的事件。对出现的异常事件进行的捕获可以是当发现引发异常事件的操作或者指令程序时,对其进行获取并用于后续处理。

s103、通过所述预设容错组件对所述异常事件进行容错处理以屏蔽异常事件。

本实施例中,该预设容错组件可根据异常事件的不同类型进行相应的容错处理,以解决由于程序运行过程中运行到引发异常的事件时导致的程序、系统崩溃的问题。

本实施例中,该容错处理发生在异常事件引起系统崩溃之前,通过设置的容错组件对原本会引发异常的程序、操作进行处理,使得异常事件在容错组件的干预作用下不产生异常,进而程序在执行过程中不会发生崩溃,对原本引发异常的事件进行了合理的屏蔽。示例性的,该容错处理包括:将易引发异常的原始函数调用由容错函数进行替换,以使容错函数在处理相关数据是屏蔽掉异常事件;将易引发数据类型异常的数据类型进行强制转换,以屏蔽掉异常数据类型引发的崩溃;当面临存在未移除监听对象而引起的崩溃问题时,通过使用新建类的方式来执行监听对象的注册与注销以避免程序崩溃;当捕获到转发异常事件时,即存在未实现消息转发的消息时,通过容错组件中设置的函数来实现该消息的转发以屏蔽由消息转发异常引起的崩溃问题。

本实施例提供了一种容错处理方法,采用系统崩溃前对异常事件进行预先处置的方式,避免了应用在运行过程中产生崩溃的问题,提高了系统执行效率。

在上述技术方案的基础上,在屏蔽异常事件之后,还包括:对用户信息、所述应用程序的代码片段信息以及设备信息进行收集;将收集到的信息进行上报。本方案中,在屏蔽异常事件后,需要对容错组件在容错过程中捕获的引起崩溃的行为进行收集,示例性的,包括用户信息、应用程序的代码片段信息以及设备信息。具体的,容错过程中收集到的信息将会上报至服务平台,服务平台对上报的信息进行汇总以用于优化程序,避免潜在的崩溃问题发生。

实施例二

图2是本发明实施例二提供的容错处理方法的流程图,在上述实施例一的基础上,可选的,所述异常事件为出现异常参数,则所述通过所述预设容错组件对所述异常事件进行容错处理以屏蔽异常事件包括:

将所述应用程序中用于处理所述异常事件的原始函数的调用,替换为对预设容错函数的调用;

如果所述预设容错函数捕获到异常事件,则屏蔽所述异常事件。

由此,实现了有异常参数导致的系统崩溃问题的出现,使得程序可以顺利运行。

基于上述优化,如图2所示,本实施例提供的技术方案具体如下:

s201、运行包含预设容错组件的应用程序。

s202、在所述应用程序的运行过程中,对出现的异常事件进行捕获。

s203、所述异常事件为出现异常参数,将所述应用程序中用于处理所述异常事件的原始函数的调用,替换为对预设容错函数的调用,如果所述预设容错函数捕获到异常事件,则屏蔽所述异常事件。

本实施例中,异常参数包括空对象异常、参数不合法异常、边界检测异常等情况。示例性的,原始函数为addobject函数,当遇到这些异常参数时将会直接引发系统崩溃,本方案在容错处理组件中,采用aop(aspectorientedprogramming,面向切面编程)编程方式,将容错函数tolerate_addobject来替换原始的addobject函数,当业务层代码调用addobject时,跳转执行tolerate_addobject函数,在处理异常参数过程中,采取将nil对象排除出数组的方式来屏蔽异常参数导致的系统崩溃问题。异常事件屏蔽后,程序将会继续运行,以执行后续相应的功能。

本实施例提供了一种容错处理方法,在程序运行过程中,避免了参数异常引起的系统崩溃问题,提高了系统运行效率,节约了系统资源。

实施例三

图3是本发明实施例三提供的容错处理方法的流程图,在上述实施例的基础上,可选的,所述异常事件为出现数据类型异常,则所述通过所述预设容错组件对所述异常事件进行容错处理以屏蔽异常事件包括:

将所述应用程序中存在所述异常事件的数据类型,强制转换为预设数据类型,以消除所述异常事件。

由此,实现了由于数据类型不合法而导致的系统崩溃的问题。

基于上述优化,如图3所示,本实施例提供的技术方案具体如下:

s301、运行包含预设容错组件的应用程序。

s302、在所述应用程序的运行过程中,对出现的异常事件进行捕获。

s303、所述异常事件为出现数据类型异常,将所述应用程序中存在所述异常事件的数据类型,强制转换为预设数据类型,以消除所述异常事件。

本实施例中,数据类型的强制转换可以是将任意的nsobject对象强制转换为指定的预设数据类型,其中预设数据类型可以是init数据类型、float数据类型、nsrange数据类型、cgsize数据类型、nsarray数据类型和nsdictionary数据类型等。可选的,在数据类型转换过程中,同时进行空判断和目标类型的判断。示例性的,如果原数据为空,则进行异常上报同时跳转至下一代码段进行程序的运行,若不为空,则进行数据类型的强制转换。

本实施例提供了一种容错处理方法,在程序运行过程中,避免了数据类型不合法引起的系统崩溃问题,提高了系统运行效率,节约了系统资源。

实施例四

图4是本发明实施例四提供的容错处理方法的流程图,在上述实施例的基础上,可选的,所述通过所述预设容错组件对所述异常事件进行容错处理以屏蔽异常事件包括:

通过内部扩展类执行所述应用程序中的键-值观察者和/或通知监听器的注册与注销。

由此,实现了对象注册和注销不匹配导致的系统崩溃问题。

基于上述优化,如图4所示,本实施例提供的技术方案具体如下:

s401、运行包含预设容错组件的应用程序。

s402、在所述应用程序的运行过程中,对出现的异常事件进行捕获。

s403、通过内部扩展类执行所述应用程序中的键-值观察者和/或通知监听器的注册与注销。

本实施例中,通过动态创建内部扩展类,通过扩展类的初始化和释放管理原有kvo(key-valueobject,键-值观察者)以及通知监听器的添加和去除,解决未移除却释放被监听对象崩溃、移除未知kvo崩溃的问题。可选的,通过internalobject中的init-dealloc(初始化函数-释放函数)来执行原有的nsobject数组属性中的addobject-removeobject功能,其中,dealloc的功能为当对象的引用计数为0时,系统会自动调用dealloc方法来回收内存,在被监听对象释放时,会清空用于管理观察者的数组属性,由于初始化函数和释放函数一一对应,故而避免了在释放该对象时没有移除观察者的崩溃。

本实施例提供了一种容错处理方法,在程序运行过程中,避免了键-值观察者和/或通知监听器注册了接收者,但是释放该对象时没有注销导致的内存泄漏引起的系统崩溃问题,提高了系统运行效率,节约了系统资源。

实施例五

图5是本发明实施例五提供的容错处理方法的流程图,在上述实施例的基础上,可选的,所述异常事件为操作对象未实现消息转发,则所述通过所述预设容错组件对所述异常事件进行容错处理以屏蔽异常事件包括:

通过预设转发函数对所述未实现消息转发的消息进行转发。

由此,实现了对未转发消息导致的系统崩溃的屏蔽。

基于上述优化,如图5所示,本实施例提供的技术方案具体如下:

s501、运行包含预设容错组件的应用程序。

s502、在所述应用程序的运行过程中,对出现的异常事件进行捕获。

s503、所述异常事件为操作对象未实现消息转发,则通过预设转发函数对所述未实现消息转发的消息进行转发。

本实施例中,在实现消息转发的时采用aop编程和扩展,可选的,如果某对象已经通过扩展或者继承的方式使用多代理或者伪代理等实现消息转发,则此处的优先级为低。本实施例中,重写了消息转发的函数(原有的函数forwardingtargetforselector在遇到消息未转发异常时将返回空,重写后返回self(代表返回值的类型是当前类的实例,类似objective-c中的instancetype);methodsignatureforselector由返回空重写为返回扩展函数handlenilselector;forwardinvocation调用handlenilselector进行异常上报)),具体的,未知消息的处理先确定转发对象forwardingtargetforselector,如果没有崩溃,则获取函数签名methodsignatureforselector,如果没有崩溃再执行forwardinvocation,在容错过程中,对不识别消息自动进行处理,使用扩展的handlenilselector执行异常上报操作。

本实施例提供了一种容错处理方法,在程序运行过程中,对未实现消息转发异常事件引起的系统崩溃进行了合理屏蔽,提高了系统运行效率,节约了系统资源。

在上述各实施例的基础上,通过所述预设容错组件对所述异常事件进行容错处理以屏蔽异常事件之后,还包括:对容错处理进行记录;如果容错处理的历史记录达到设定条件或接收到服务器根据容错处理历史记录下发的重启指示,则将所述应用程序恢复至初始状态。本方案可适用于首页启动崩溃问题的解决,具体的,采用了两层补救措施,包括自修复以及服务器配置修复。示例性的,该容错处理的历史记录达到设定条件(异常次数为3次、5次或8次等)则将应用程序恢复至初始状态,恢复初始状态的具体措施可以是清空缓存数据、清空用户状态文件、自动修复损坏文件等。其中,服务器端课根据容错处理记录中记录的容错处理次数来下发重启指示,应用程序根据该重启指示进行自动修复重启。

实施例六

图6是本发明实施例六提供的容错处理装置的结构框图,所述装置用于执行上述实施例提供的容错处理方法,具备执行方法相应的功能模块和有益效果。如图6所示,所述装置包括异常事件捕获模块1、容错处理模块2和上报模块3。

其中,异常事件捕获模块1用于在运行包含预设容错组件的应用程序过程中,对出现的异常事件进行捕获;

容错处理模块2用于通过所述预设容错组件对所述异常事件进行容错处理以屏蔽异常事件;

上报模块3用于在屏蔽异常事件之后,对用户信息、所述应用程序的代码片段信息以及设备信息进行收集;将收集到的信息进行上报。

本实施例提供的容错处理装置,实现了应用的稳定运行,避免了应用在运行过程中产生崩溃的问题,提高了系统执行效率。

在上述技术方案的基础上,所述异常事件为出现异常参数,则容错处理模块2具体用于:将所述应用程序中用于处理所述异常事件的原始函数的调用,替换为对预设容错函数的调用,如果所述预设容错函数捕获到异常事件,则屏蔽所述异常事件;

所述异常事件为出现数据类型异常,则容错处理模块2具体用于:将所述应用程序中存在所述异常事件的数据类型,强制转换为预设数据类型,以消除所述异常事件;

所述异常事件为操作对象未实现消息转发,则容错处理模块2具体用于:通过预设转发函数对所述未实现消息转发的消息进行转发;

所述容错处理模块2还用于:通过内部扩展类执行所述应用程序中的键-值观察者和/或通知监听器的注册与注销;对容错处理进行记录,如果容错处理的历史记录达到设定条件或接收到服务器根据容错处理历史记录下发的重启指示,则将所述应用程序恢复至初始状态。

实施例七

图7是本发明实施例七提供的一种终端的结构示意图。图7示出了适于用来实现本发明实施方式的示例性终端12的框图。图7显示的终端12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图7所示,终端12以通用计算设备的形式表现。终端12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。

终端12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被终端12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。终端12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图7未显示,通常称为“硬盘驱动器”)。尽管图7中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

终端12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该终端12交互的设备通信,和/或与使得该终端12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,终端12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与终端12的其它模块通信。应当明白,尽管图中未示出,可以结合终端12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的容错处理方法。

实施例八

本发明实施例八还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种容错处理方法,其特征在于,该方法包括:

运行包含预设容错组件的应用程序;

在所述应用程序的运行过程中,对出现的异常事件进行捕获;

通过所述预设容错组件对所述异常事件进行容错处理以屏蔽异常事件。

本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如”c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1