Java工程项目开发中异常处理的方法及系统技术领域
[0001] 本发明涉及Java工程项目软件开发技术,尤其涉及Java工程项目开发中异常处理的方法及系统。
背景技术
[0002] Java项目开发过程中,出于业务的需求,开发过程中会定义多种类型的异常处理。异常的定义通常用于提示程序运行错误的信息,也可以用于提示非正常业务操作而产生的意外运算;它对程序开发、调试、二次开发以及程序的易用性方面都有非常重大的作用。这也是Java编程的特色之一。总之,正确运用异常处理机制,有助于提高程序的健壮性,即指程序在多数情况下能够正常运行,返回预期的正确结果;如果偶尔遇到异常情况,程序也能采取周到的解决措施。
[0003] Sun公司定义了 Java的异常处理架构,分为运行时异常和检查异常。运行时异常是表示无法让程序恢复运行的异常,导致这种异常的原因通常是由于执行了错误操作,亦即如果程序代码中有错误,就可能导致运行时异常。一旦出现了错误操作,建议终止程序,因此Java编译器不检查这种异常。检查异常是表示程序可以处理的异常,如果抛出异常的方法本身不能处理它,那么方法调用者应该去处理它,从而使程序恢复运行,不至于终止程序。由此可见,运行时异常是应该尽量避免的,在程序调试阶段,遇到这种异常正确的做法是改进程序的设计和实现方式,修改程序中的错误,从而避免这种异常。在Java工程开发过程中,由于技术水平参差不齐,团队要求不统一等原因,大多数的工程采用检查异常来处理代码逻辑,造成Java代码可读性降低,代码量增大,代码逻辑混论,编程风格不统一等等的问题,降低了程序的可读性和可复用性。
[0004] 因此,Java工程项目开发亟需提供一种能够用运行时异常代替检查异常的处理方法,以简化项目工程开发的异常处理。
发明内容
[0005] 本发明所要解决的技术问题是提供一种Java工程项目开发中异常处理的方法及系统,能够简化项目工程开发的异常处理。
[0006] 为了解决上述技术问题,本发明提供了一种Java工程项目开发中异常处理的方法,包括:
[0007] 在运行时异常类里定义程序异常子类和业务异常子类;
[0008] 在工程项目开发过程中顶层下的低层均向上层抛出属于程序异常子类和业务异常子类的异常;
[0009] 由顶层集中捕获低层上抛的属于程序异常子类和业务异常子类的异常,并在处理捕获的异常后转换成相应的提示信息。
[0010] 进一步地,
[0011] 顶层下的低层分别为数据寻访对象层和高于数据寻访对象层的业务处理层,业务处理层对于所述数据寻访对象层抛上来的异常直接抛给属于上一层的顶层;
[0012] 顶层是指控制层或执行层。
[0013] 进一步地,
[0014] 低层除了向上层抛出属于程序异常子类和业务异常子类的异常外,还向上层抛出由第三方程序抛出的异常;
[0015] 顶层除了集中捕获低层上抛的属于所述程序异常子类和业务异常子类的异常外,还捕获低层上抛的由第三方程序抛出的异常,并在处理捕获的异常后转换成相应的提示信肩、O
[0016] 为了解决上述技术问题,本发明提供了一种Java工程项目开发中异常处理的系统,包括依次连接的异常子类定义模块、低层异常抛出模块以及顶层异常处理模块,其中:
[0017] 异常子类定义模块,用于在运行时异常类里定义程序异常子类和业务异常子类;
[0018] 低层异常抛出模块,设置在顶层的低层,用于在工程项目开发过程中向上层抛出属于程序异常子类和业务异常子类的本层异常或下层抛上来的异常;
[0019] 顶层异常处理模块,用于通过异常捕获单元集中捕获低层上抛的属于程序异常子类和业务异常子类的异常,通过异常处理单元处理捕获的异常,然后由信息转换单元将处理的异常转换成相应的提示信息。
[0020] 进一步地,
[0021] 低层异常抛出模块设置在顶层的低层,是指分别设置在数据寻访对象层和设置在高于数据寻访对象层的业务处理层;在业务处理层的低层异常抛出模块对于在数据寻访对象层的低层异常抛出模块抛上来的异常直接抛给属于上一层的顶层;
[0022] 顶层异常处理模块设置在控制层或执行层。
[0023] 进一步地,
[0024] 低层异常抛出模块除了在工程项目开发过程中向上层抛出属于程序异常子类和业务异常子类的本层异常或下层抛上来的异常外,还向上层抛出本层的或下层抛上来的由第三方程序抛出的异常;
[0025] 顶层异常处理模块除了通过异常捕获单元集中捕获低层上抛的属于程序异常子类和业务异常子类的异常外,还集中捕获低层上抛的由第三方程序抛出的异常;通过异常处理单元处理捕获的异常,然后由信息转换单元将处理的异常转换成相应的提示信息。
[0026] 本发明取消Java编程中数据寻访对象(Dao, Data Access Object)层、业务处理(Sevice)层对检查异常类型的检查,用运行时异常类型RuntimeExc印t1n取而代之,并且在运行时异常类里定义两个子类:程序异常子类和业务异常子类。由此,本发明由于不需要Dao层和Service层进行检查异常的处理,故相应的try catch块相应取消,因而使得顶层以下各层的代码非常简洁,提高了 Java代码的可读性,也大大减少了代码量,使得代码逻辑清晰,也能够统一编程风格,提高了代码的可复用性。
附图说明
[0027] 图1为本发明的Java工程项目开发中异常处理的方法实施例的流程图;
[0028] 图2为用图1所示的方法实施例的示意图;
[0029] 图3为本发明的Java工程项目开发中异常处理的系统实施例的结构框图。
具体实施方式
[0030] 以下结合附图和优选实施例对本发明的技术方案进行详细地阐述。应该理解,以下列举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。
[0031] 如图1所示,表示了本发明的Java工程项目开发中异常处理的方法实施例的流程,包括如下步骤:
[0032] 110:在运行时异常类里定义程序异常子类和业务异常子类;
[0033] 其中,程序类异常是程序因为数据传递而产生的,是可以避免的异常;业务异常是因业务需要将底层的不符合业务需求而反馈给web用户的异常流,经常用来携带错误码等信息。
[0034] 120:在工程项目开发过程中顶层下的低层均向上层抛出属于定义子类的异常;
[0035] 这里,顶层的低层分别为Dao层(在编程项目中和数据库打交道的一个程序虚拟层)和Sevice层(位于Dao层之上,是各种逻辑关系处理的核心程序虚拟层),它们向上层抛出分别属于程序异常子类和业务异常子类的异常,如图2所示。
[0036] 这两层只抛出异常,不处理异常。对于Dao层抛上来的异常,Service层不做任何处理,只是直接抛给上一层。由于这两层均不需对异常进行处理,代码中就不会出现大量的try catch块了,使得代码看起来很简洁。
[0037] 130:由顶层集中捕获低层上抛的定义子类的异常,并在处理捕获的异常后转换成相应的提示信息。
[0038] 这里,顶层是指控制(Controller)层或执行(Act1n)层。由顶层集中通过trycatch块来捕获并处理这些异常,最终转化成信息提示,请参见图2。转化成的信息提示例如:“用户不存在”,“资源已用完”,“后台计算出错”以及“后台计算忙”等等信息,并在顶层把处理异常的情况写成日志,存储到系统数据库中。
[0039] 通过顶层对运行时异常的集中处理,可达到“不重复处理异常,不重复记录日志”的目的。
[0040] 在上述方法实施例中,
[0041] 步骤120在工程项目开发过程中低层除了向上层抛出属于定义子类的异常外,还向上层抛出由第三方程序抛出的异常;
[0042] 步骤130由顶层除了集中捕获低层上抛的定义子类的异常外,还捕获低层上抛的由第三方程序抛出的异常,并在处理捕获的异常后转换成相应的提示信息。
[0043] 当工程项目开发的程序中调用第三方的程序时,若出现运算错误,也会导致一些异常的发生。这些异常同样均在顶层集中处理。
[0044] 本发明针对上述方法实施例,相应地还提供了 Java工程项目开发中异常处理的系统实施例,其结构如图3所示,包括依次连接的异常子类定义模块、低层异常抛出模块以及顶层异常处理模块,其中:
[0045] 异常子类定义模块,用于在运行时异常类里定义程序异常子类和业务异常子类;
[0046] 低层异常抛出模块,用于设置顶层的低层,在工程项目开发过程中向上层抛出属于程序异常子类和业务异常子类的本层异常或下层抛上来的异常;
[0047] 顶层异常处理模块,用于通过异常捕获单元集中捕获低层上抛的属于程序异常子类和业务异常子类的异常,通过异常处理单元处理捕获的异常,然后由信息转换单元将处理的异常转换成相应的提示信息。
[0048] 在上述系统实施例中,
[0049] 低层异常抛出模块设置在顶层的低层,是指分别设置在Dao层和设置在高于Dao层的Service层;在Service层的低层异常抛出模块对于在Dao层的低层异常抛出模块抛上来的异常直接抛给属于上一层的顶层;
[0050] 顶层异常处理模块设置在控制层或执行层。
[0051] 在上述系统实施例中,
[0052] 低层异常抛出模块除了在工程项目开发过程中向上层抛出属于定义子类的本层异常或下层抛上来的异常外,还向上层抛出本层的或下层抛上来的由第三方程序抛出的异常;
[0053] 顶层异常处理模块除了通过异常捕获单元集中捕获低层上抛的定义子类的异常夕卜,还集中捕获低层上抛的由第三方程序抛出的异常;通过异常处理单元处理捕获的异常,然后由信息转换单元将处理的异常转换成相应的提示信息。