热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java工程项目开发中异常处理的方法及系统

摘要本发明披露了Java工程项目开发中异常处理的方法及系统,其中方法包括:在运行时异常类里定义程序异常子类和业务异常子类;在工程项目开发过程中顶层下的低层均向上层抛出属于程序异常子类和业务异常子类的异
摘要

本发明披露了Java工程项目开发中异常处理的方法及系统,其中方法包括:在运行时异常类里定义程序异常子类和业务异常子类;在工程项目开发过程中顶层下的低层均向上层抛出属于程序异常子类和业务异常子类的异常;由顶层集中捕获低层上抛的属于程序异常子类和业务异常子类的异常,并在处理捕获的异常后转换成相应的提示信息。本发明通过在运行时异常类里定义程序异常子类和业务异常子类。由于低层不进行检查异常的处理,故相应的try catch块相应取消,因而使得顶层以下低层的代码非常简洁,使得代码逻辑清晰,也能够统一编程风格,提高了代码的可复用性。

权利要求(6)1.一种Java工程项目开发中异常处理的方法,其特征在于,包括: 在运行时异常类里定义程序异常子类和业务异常子类; 在工程项目开发过程中顶层下的低层均向上层抛出属于所述程序异常子类和所述业务异常子类的异常; 由所述顶层集中捕获所述低层上抛的属于所述程序异常子类和所述业务异常子类的异常,并在处理捕获的异常后转换成相应的提示信息。2.按照权利要求1所述的方法,其特征在于, 所述顶层下的低层分别为数据寻访对象层和高于所述数据寻访对象层的业务处理层,所述业务处理层对于所述数据寻访对象层抛上来的异常直接抛给属于上一层的所述顶层; 所述顶层是指控制层或执行层。3.按照权利要求1或2所述的方法,其特征在于, 所述低层除了向上层抛出属于所述程序异常子类和所述业务异常子类的异常外,还向上层抛出由第三方程序抛出的异常; 所述顶层除了集中捕获所述低层上抛的属于所述程序异常子类和所述业务异常子类的异常外,还捕获所述低层上抛的由第三方程序抛出的异常,并在处理捕获的异常后转换成相应的提示信息。4.一种Java工程项目开发中异常处理的系统,其特征在于,包括依次连接的异常子类定义模块、低层异常抛出模块以及顶层异常处理模块,其中: 异常子类定义模块,用于在运行时异常类里定义程序异常子类和业务异常子类; 低层异常抛出模块,设置在顶层的低层,用于在工程项目开发过程中向上层抛出属于程序异常子类和业务异常子类的本层异常或下层抛上来的异常; 顶层异常处理模块,用于通过异常捕获单元集中捕获低层上抛的属于程序异常子类和业务异常子类的异常,通过异常处理单元处理捕获的异常,然后由信息转换单元将处理的异常转换成相应的提示信息。5.按照权利要求4所述的系统,其特征在于, 所述低层异常抛出模块设置在顶层的低层,是指分别设置在数据寻访对象层和设置在高于所述数据寻访对象层的业务处理层;在所述业务处理层的低层异常抛出模块对于在所述数据寻访对象层的低层异常抛出模块抛上来的异常直接抛给属于上一层的所述顶层; 所述顶层异常处理模块设置在控制层或执行层。6.按照权利要求4或5所述的系统,其特征在于, 所述低层异常抛出模块除了在工程项目开发过程中向上层抛出属于程序异常子类和业务异常子类的本层异常或下层抛上来的异常外,还向上层抛出本层的或下层抛上来的由第三方程序抛出的异常; 所述顶层异常处理模块除了通过异常捕获单元集中捕获所述低层上抛的属于程序异常子类和业务异常子类的异常外,还集中捕获所述低层上抛的所述由第三方程序抛出的异常;通过异常处理单元处理捕获的异常,然后由信息转换单元将处理的异常转换成相应的提示信息。说明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] 顶层异常处理模块除了通过异常捕获单元集中捕获低层上抛的定义子类的异常夕卜,还集中捕获低层上抛的由第三方程序抛出的异常;通过异常处理单元处理捕获的异常,然后由信息转换单元将处理的异常转换成相应的提示信息。





推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
author-avatar
L-壹_413
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有