CN112083952A - 一种基于spring架构的异常处理方法及*** - Google Patents

一种基于spring架构的异常处理方法及*** Download PDF

Info

Publication number
CN112083952A
CN112083952A CN202010871621.2A CN202010871621A CN112083952A CN 112083952 A CN112083952 A CN 112083952A CN 202010871621 A CN202010871621 A CN 202010871621A CN 112083952 A CN112083952 A CN 112083952A
Authority
CN
China
Prior art keywords
exception
exception handling
class
global
handling structure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010871621.2A
Other languages
English (en)
Inventor
吉纲
彭骏
黄刚
张立
张艳君
王钊
石全
王卓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Routon Electronic Co ltd
Wuhan Precision Business Machine Co ltd
Original Assignee
Routon Electronic Co ltd
Wuhan Precision Business Machine Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Routon Electronic Co ltd, Wuhan Precision Business Machine Co ltd filed Critical Routon Electronic Co ltd
Priority to CN202010871621.2A priority Critical patent/CN112083952A/zh
Publication of CN112083952A publication Critical patent/CN112083952A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • G06F16/355Class or cluster creation or modification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供一种基于spring架构的异常处理方法及***,该方法包括:获取原始异常处理结构;通过将所述原始异常处理结构改造成全局异常处理结构,所述全局异常处理结构包括若干处理业务异常的类。本发明实施例通过引入全局异常处理类,将程序的异常转换为用户可读的异常,提高代码的简洁度,也提高了代码的重用性和可维护性,使得开发人员能更专注于处理好业务逻辑,提高编码效率。

Description

一种基于spring架构的异常处理方法及***
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于spring架构的异常处理方法及***。
背景技术
在软件开发过程中,不可避免的是需要处理各种异常bug。
为了保证代码的健壮性,在通常的编码过程中不得不加入大量的try-catch代码块来捕捉异常,保证程序能正常运行,但这种处理方式很不优雅,代码中有大量的冗余代码,且十分影响代码的可读性。
因此,需要提出一种合适的针对异常程序的处理方法,使得代码变得更简洁,更通俗易懂。
发明内容
本发明实施例提供一种基于spring架构的异常处理方法及***,用以解决现有技术中软件开发中处理异常时容易产生大量冗余代码的缺陷,实现优雅地处理异常数据。
第一方面,本发明实施例提供一种基于spring架构的异常处理方法,包括:
获取原始异常处理结构;
通过将所述原始异常处理结构改造成全局异常处理结构,所述全局异常处理结构包括若干处理业务异常的类。
优选地,所述通过将所述原始异常处理结构改造成全局异常处理结构,所述全局异常处理结构包括若干处理业务异常的类,具体包括:
在所述全局异常处理结构中确定预设异常工具类;
在所述预设异常工具类中添加所述若干处理业务异常的类,所述若干处理业务异常的类包括接口返回及异常返回通用类、枚举类和异常全局处理类。
优选地,所述接口返回及异常返回通用类用于返回接口状态信息和异常状态信息。
优选地,所述枚举类用于记录各种异常的返回码和返回信息,以及添加新的异常处理信息及状态码。
优选地,所述异常全局处理类用于进行类注解和方法注解,所述类注解作用于整个spring工程,所述方法注解作用于controller级别,所述方法注解的优先级高于所述类注解的优先级。
优选地,所述接口返回及异常返回通用类还用于在调用接口时,根据预设需求进行改造。
第二方面,本发明实施例还提供一种基于spring架构的异常处理***,包括:
获取模块,用于获取原始异常处理结构;
处理模块,用于通过将所述原始异常处理结构改造成全局异常处理结构,所述全局异常处理结构包括若干处理业务异常的类。
优选地,所述处理模块,具体用于:
确定子模块,用于在所述全局异常处理结构中确定预设异常工具类;
添加子模块,用于在所述预设异常工具类中添加所述若干处理业务异常的类,所述若干处理业务异常的类包括接口返回及异常返回通用类、枚举类和异常全局处理类。
第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于spring架构的异常处理方法的步骤。
第四方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于spring架构的异常处理方法的步骤。
本发明实施例提供的基于spring架构的异常处理方法及***,通过引入全局异常处理类,将程序的异常转换为用户可读的异常,提高代码的简洁度,也提高了代码的重用性和可维护性,使得开发人员能更专注于处理好业务逻辑,提高编码效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于spring架构的异常处理方法的流程示意图;
图2是本发明实施例提供的原始调用除法程序示意图;
图3是本发明实施例提供的改造成全局异常处理方式示意图;
图4是本发明实施例提供的异常工具类示意图;
图5是本发明实施例提供的接口返回和异常返回的通用类示意图;
图6是本发明实施例提供的枚举类示意图;
图7是本发明实施例提供的异常全局处理类示意图;
图8是本发明实施例提供的接口改造示意图;
图9是本发明实施例提供的一种基于spring架构的异常处理***的结构示意图;
图10是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对现有技术存在的问题,本发明实施例提出一种基于spring架构的异常处理方法。
图1是本发明实施例提供的一种基于spring架构的异常处理方法的流程示意图,如图1所示,包括:
S1,获取原始异常处理结构;
S2,通过将所述原始异常处理结构改造成全局异常处理结构,所述全局异常处理结构包括若干处理业务异常的类。
具体地,在原始异常处理结构中,定义一个用于返回页面结果信息的VO对象类或者枚举类,包含异常状态码及异常信息;自定义一个全局异常处理类,针对不同的异常自定义不同的方法,使用spring的aop切面技术指定对应的异常方法,或者通过@ControllerAdvice+@ExceptionHandler注解来指定,异常方法里返回页面能够处理的结果集。
需要说明的是,@ControllerAdvice和@ExceptionHandler的区别如下:
ExceptionHandler是方法注解,作用于Controller级别,ExceptionHandler注解为一个Controler定义一个异常处理器;
ControllerAdvice是类注解,作用于整个Spring工程,ControllerAdvice注解定义了一个全局的异常处理器;
ExceptionHandler的优先级比ControllerAdvice高,即Controller抛出的异常如果既可以让ExceptionHandler标注的方法处理,又可以让ControllerAdvice标注的类中的方法处理,则优先让ExceptionHandler标注的方法处理。
使用@ControllerAdvice+@ExceptionHandler进行全局的Controller层异常处理后,只用关注业务逻辑,而不用花费大量精力写冗余的try catch代码块,减少模板代码,减少编码量,提升扩展性和可维护性。
本发明实施例通过引入全局异常处理类,将程序的异常转换为用户可读的异常,提高代码的简洁度,也提高了代码的重用性和可维护性,使得开发人员能更专注于处理好业务逻辑,提高编码效率。
基于上述实施例,步骤S2具体包括:
在所述全局异常处理结构中确定预设异常工具类;
在所述预设异常工具类中添加所述若干处理业务异常的类,所述若干处理业务异常的类包括接口返回及异常返回通用类、枚举类和异常全局处理类。
具体的,例如需要调用一个除法接口时,如果除数为0就会抛出异常,这时候不处理,***就会崩溃或者返给用法一大堆看不懂的信息,此时必须使用try-catch进行处理,除数为0时进行捕捉,如果有多个业务需要try-catch或者复杂的业务在一个try中追加多个catch,冗余代码就会更加多,如图2所示。
此时,需要改造成全局异常处理方式,可以先定义一个所需要的处理业务异常的类,如果有多种业务也可以定义多种异常类,最后统一在全局异常处理controller中识别,如图3所示。
此处,定义一个异常工具类,用于处理业务中会出现异常的情况,后续项目中所有的异常方式判定都可在此类添加,如图4所示。
基于上述任一实施例,所述接口返回及异常返回通用类用于返回接口状态信息和异常状态信息。
具体地,定义一个用于接口返回和异常返回的通用类,如图5所示。
基于上述任一实施例,所述枚举类用于记录各种异常的返回码和返回信息,以及添加新的异常处理信息及状态码。
具体地,定义一个枚举类,用于记录各种异常的返回码和返回信息,在编码的过程中,若需要新的异常处理信息及状态码,都可在此类添加,如图6所示。
基于上述任一实施例,所述异常全局处理类用于进行类注解和方法注解,所述类注解作用于整个spring工程,所述方法注解作用于controller级别,所述方法注解的优先级高于所述类注解的优先级。
具体地,定义一个异常全局处理类,注解@ControllerAdvice表示此类为异常全局处理类,注解@ExceptionHandler(value=BaseException.class)表示只要前面的方法中有抛出BaseException异常,都可被此方法所捕捉处理,如图7所示。
基于上述任一实施例,所述接口返回及异常返回通用类还用于在调用接口时,根据预设需求进行改造。
具体地,可根据实际需求对接口类进行相应改造,如图8所示。
在定义各种类之后,没有抛出异常时的调用效果如下,若接收参数b=1时,接口返回计算结果值c=6.0;若接收参数b=0时,通过checkZero方法触发了BaseException,在异常全局处理类中被捕捉到,最后返回给用户枚举类中定义的异常状态码及异常信息。
下面对本发明实施例提供的基于spring架构的异常处理***进行描述,下文描述的基于spring架构的异常处理***与上文描述的基于spring架构的异常处理方法可相互对应参照。
图9是本发明实施例提供的一种基于spring架构的异常处理***的结构示意图,如图9所示,包括:获取模块91和处理模块92;其中:
获取模块91用于获取原始异常处理结构;处理模块92用于通过将所述原始异常处理结构改造成全局异常处理结构,所述全局异常处理结构包括若干处理业务异常的类。
本发明实施例通过引入全局异常处理类,将程序的异常转换为用户可读的异常,提高代码的简洁度,也提高了代码的重用性和可维护性,使得开发人员能更专注于处理好业务逻辑,提高编码效率。
基于上述实施例,所述处理模块92具体用于:
确定子模块921用于在所述全局异常处理结构中确定预设异常工具类;添加子模块922用于在所述预设异常工具类中添加所述若干处理业务异常的类,所述若干处理业务异常的类包括接口返回及异常返回通用类、枚举类和异常全局处理类。
图10示例了一种电子设备的实体结构示意图,如图10所示,该电子设备可以包括:处1020、存储器(memory)1030和通信总线(bus)1040,其中,处理器1010,通信接口1020,存储器1030通过通信总线1040完成相互间的通信。处理器1010可以调用存储器1030中的逻辑指令,以执行基于spring架构的异常处理方法,该方法包括:获取原始异常处理结构;通过将所述原始异常处理结构改造成全局异常处理结构,所述全局异常处理结构包括若干处理业务异常的类。
此外,上述的存储器1030中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的基于spring架构的异常处理方法,该方法包括:获取原始异常处理结构;通过将所述原始异常处理结构改造成全局异常处理结构,所述全局异常处理结构包括若干处理业务异常的类。
又一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的基于spring架构的异常处理方法,该方法包括:获取原始异常处理结构;通过将所述原始异常处理结构改造成全局异常处理结构,所述全局异常处理结构包括若干处理业务异常的类。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于spring架构的异常处理方法,其特征在于,包括:
获取原始异常处理结构;
通过将所述原始异常处理结构改造成全局异常处理结构,所述全局异常处理结构包括若干处理业务异常的类。
2.根据权利要求1所述的基于spring架构的异常处理方法,其特征在于,所述通过将所述原始异常处理结构改造成全局异常处理结构,所述全局异常处理结构包括若干处理业务异常的类,具体包括:
在所述全局异常处理结构中确定预设异常工具类;
在所述预设异常工具类中添加所述若干处理业务异常的类,所述若干处理业务异常的类包括接口返回及异常返回通用类、枚举类和异常全局处理类。
3.根据权利要求2所述的基于spring架构的异常处理方法,其特征在于,所述接口返回及异常返回通用类用于返回接口状态信息和异常状态信息。
4.根据权利要求2所述的基于spring架构的异常处理方法,其特征在于,所述枚举类用于记录各种异常的返回码和返回信息,以及添加新的异常处理信息及状态码。
5.根据权利要求2所述的基于spring架构的异常处理方法,其特征在于,所述异常全局处理类用于进行类注解和方法注解,所述类注解作用于整个spring工程,所述方法注解作用于controller级别,所述方法注解的优先级高于所述类注解的优先级。
6.根据权利要求3所述的基于spring架构的异常处理方法,其特征在于,所述接口返回及异常返回通用类还用于在调用接口时,根据预设需求进行改造。
7.一种基于spring架构的异常处理***,其特征在于,包括:
获取模块,用于获取原始异常处理结构;
处理模块,用于通过将所述原始异常处理结构改造成全局异常处理结构,所述全局异常处理结构包括若干处理业务异常的类。
8.根据权利要求7所述的基于spring架构的异常处理***,其特征在于,所述处理模块,具体用于:
确定子模块,用于在所述全局异常处理结构中确定预设异常工具类;
添加子模块,用于在所述预设异常工具类中添加所述若干处理业务异常的类,所述若干处理业务异常的类包括接口返回及异常返回通用类、枚举类和异常全局处理类。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述基于spring架构的异常处理方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述基于spring架构的异常处理方法的步骤。
CN202010871621.2A 2020-08-26 2020-08-26 一种基于spring架构的异常处理方法及*** Pending CN112083952A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010871621.2A CN112083952A (zh) 2020-08-26 2020-08-26 一种基于spring架构的异常处理方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010871621.2A CN112083952A (zh) 2020-08-26 2020-08-26 一种基于spring架构的异常处理方法及***

Publications (1)

Publication Number Publication Date
CN112083952A true CN112083952A (zh) 2020-12-15

Family

ID=73728979

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010871621.2A Pending CN112083952A (zh) 2020-08-26 2020-08-26 一种基于spring架构的异常处理方法及***

Country Status (1)

Country Link
CN (1) CN112083952A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114579194A (zh) * 2022-03-08 2022-06-03 杭州每刻科技有限公司 一种基于Spring远程调用的异常处理方法和***

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109522222A (zh) * 2018-10-26 2019-03-26 深圳点猫科技有限公司 一种用于教育云平台的异常捕获方法及装置
CN110069297A (zh) * 2019-03-28 2019-07-30 平安科技(深圳)有限公司 基于Spring MVC的异常处理方法、装置、计算机设备和存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109522222A (zh) * 2018-10-26 2019-03-26 深圳点猫科技有限公司 一种用于教育云平台的异常捕获方法及装置
CN110069297A (zh) * 2019-03-28 2019-07-30 平安科技(深圳)有限公司 基于Spring MVC的异常处理方法、装置、计算机设备和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈学明: "《Spring+Spring MVC+MyBatis整合开发实战》", 北京:机械工业出版社, pages: 192 - 195 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114579194A (zh) * 2022-03-08 2022-06-03 杭州每刻科技有限公司 一种基于Spring远程调用的异常处理方法和***
CN114579194B (zh) * 2022-03-08 2024-04-05 杭州每刻科技有限公司 一种基于Spring远程调用的异常处理方法和***

Similar Documents

Publication Publication Date Title
CN108958714B (zh) 业务组件式开发方法、装置、计算机设备及存储介质
CN108804215B (zh) 一种任务处理方法、装置以及电子设备
CN106557470B (zh) 数据提取方法和装置
CN111931172A (zh) 一种金融***业务流程异常预警方法及装置
CN111143446A (zh) 数据对象的数据结构转换处理方法、装置及电子设备
CN107239325B (zh) 单证数据处理方法和装置
CN111666088A (zh) Pod的更替方法、装置、电子设备及计算机可读存储介质
CN111338716A (zh) 基于规则引擎的数据处理方法、装置及终端设备
CN112083952A (zh) 一种基于spring架构的异常处理方法及***
CN112540837B (zh) 业务处理组件调用方法、***、电子设备和存储介质
CN108595178B (zh) 一种基于hook的数据采集方法、装置及设备
CN113886590A (zh) 数据汇总方法、装置、计算机设备及存储介质
CN112631920A (zh) 一种测试方法、装置、电子设备及可读存储介质
CN111176891A (zh) 一种基板管理控制器配置信息的恢复方法、装置及设备
CN116226078A (zh) 一种数据迁移方法、装置、设备和存储介质
CN111324645A (zh) 区块链的数据处理方法及装置
CN115185576A (zh) 一种基于流程类应用***的流程定制方法及***
CN110221952B (zh) 业务数据的处理方法及装置、业务数据处理***
CN114416305A (zh) 一种机器人引擎实现方法、***及电子设备
CN113297149A (zh) 数据处理请求的监测方法及装置
CN114546793A (zh) 一种日志生成方法、装置和计算机可读存储介质
CN112486481A (zh) 多模块分层架构实现方法、装置、电子设备及介质
CN111538491A (zh) 数据事件处理方法、装置、设备和存储介质
CN113268230B (zh) 一种反馈信息的生成方法、装置、终端和存储介质
CN117076004B (zh) 微服务打包合并方法、装置和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination