`
ljh2008
  • 浏览: 45942 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

项目中异常设计及处理总结

阅读更多

异常,为我们处理非正常的业务流程提供了很好的解决方案,如果你有过dbase、c、pascal等过程式语言开发的经历,你一定会深刻体会到,异常机制给你的代码可读行、可维护性带来的好处,同时,程序的健壮性也得到了增强。
在 java项目中,异常设计要注意下面的几点。
一、自定义异常父类的选择
A、自定义异常的父类,可以选择为RuntimeException或Exception。RuntimeException是运行时异常,你可以选择它 来做为你的异常父类,因为这种异常不受到编译器检查,因此,给予了程序员很大的灵活性,程序员可以处理这种异常,也可以不处理(实际上并不是不处理,而是 不立即处理,等到一个合适的地方再进行处理)。选择RuntimeException作为父类,是很多框架常采用的,如果你是做底层框架的,可以选择 RuntimeException。
B、业务层异常,一般选择Exception作为父类,因为业务层异常比较重要,一般都是要由调用者进行处理或者是要告知调用者会发生这种异常。如果你的 代码是提供给第三方厂商用的,业务层封闭统一的异常就显得非常的有必要。这类异常会强制要求程序员进行处理(异常转译或继续声明抛出),程序完整性、健壮 性得到了加强。
二、业务层自定义异常结构的设计
A、业务层自定义异常可以考虑按子系统来划分,也就是说,每一个子系统(模块)都有自己的异常定义,每个子系统自己维护自己的,统一向调用者抛出。
B、根据业务类型,从逻辑上划分异常类型,比如:权限相关的,安全相关的,数据库相关的等等。
总的来说,这两种自定义异常也可以混合使用,因为有的时候,子系统(业务模块)本身就是从逻辑上进行划分的。
三、异常结构定义
异常类的父类选定后,再定义自己的异常结构。一般的异常类中,要定义这么一些东西。
A、描述字符串,说明异常的起因,或说明等。
B、异常码。定义一个int或String类型的异常码,异常码在整个系统中统一定义,根据异常继承结构,异常码也可以定义得有层次结构。异常码在大的系统中比较常见,Oracle ,Sqlserver等数据库产品中,或华为、中兴的一些驱动api中。
C、定义一个Throwable的成员变量,用以封装异常结构链。
D、定义无参数、有参数(String,Throwable)的构造方法。
四、在WEB三层模型中,异常的处理
在经典的三层架构模型中,通常都是这样来进行异常处理的:
A、持久层一般抛出的是RuntiomeException类型的异常,一般不处理,直接向上抛出。
B、业务层一般要封装自定义异常,统一向外抛出(这里要注意,如果用spring在业务层管理异常,一定要配置好异常回滚类型,因为spring默认只回 滚RuntiomeException类型的)。我也见过一些想省事的人,业务层也不定义任何异常,也不进行try catch,如果业务层出现异常将在表现层进行处理及页面跳转。
C、表现层必须要处理业务层的异常,以正确向客户报告系统出现的问题,这里面是最后一道异常处理的地方。我也见过有懒人在业务层都不处理,直接在web.xml中配置errorPage的,但不建议这么做。
用好异常,对于项目的可维护性、健壮性都有极大的好处,当然,异常也不是万能的,在有些项目中并不适用,比如:纯算法项目,对性能要求极高的项目等,因为 异常栈会对系统性能有一定开销,在这些项目中,最后还在老老实实用方法的返回值去标识方法执行的结果,用if else去处理业务逻辑中的非正常情况吧。

分享到:
评论

相关推荐

    基于opencv和mfc的摄像头采集处理程序,图像处理可视化源码+项目说明.zip

    基于现有资料,通过在实际项目中的积累,我总结出来一套结合opencv和mfc的摄像头采集框架。具有以下特点: 1、基于directshow,兼容性好,速度快。到目前为止,无论是工业相机还是普通相机,没发现不兼容的; 2、...

    Java程序设计习题集下载

    习题集内容覆盖面广,包括:Java言的基本常识、基本语法、面向对象的基本概念、数组、字符串、异常处理、文件和数据流、图形用户界面设计、小应用程序、线程、编程规范、网络程序设计、多媒体民图形学程序设计以及...

    A毕业设计:AI项目实践管理汇总

    进行AI项目实践管理是一个重要的工作,可以帮助团队高效地开展人工智能项目并达成项目目标。以下是一个简单的AI项目实践管理汇总的步骤: ... - 监控系统运行情况,及时处理问题和异常。 7. **项目总结**: ...

    Java 面向对象编程.pdf

    内容简介 《Java 面向对象编程》内容由浅入深,紧密结合实际,...其最大特色是以六条主线贯穿全书:面向对象编程思想、Java语言的语法、Java虚拟机执行Java程序的原理、在实际项目中的运用、设计模式和性能优化技巧。

    C# 简易计算器

    3)考虑操作性或实用性,如支持退格键、异常输入处理等; 4)为突出实验重点,可以不考虑数制转换、复合运算、括号运算等功能; 5)支持小键盘输入时,留意理解窗口的KeyPreview属性,即是否窗口接收键盘事件。...

    Visual C++ 数据库系统开发完全手册.part2

    20.9 异常处理 20.10 程序设计清单 20.11 技术、经验总结 20.11.1 技术总结 20.11.2 经验总结 20.12 系统的编译与发行 第21章 Visual C++ 6.0在学生管理系统中的应用 21.1 学生管理系统概述 21.1.1 开发背景及意义 ...

    Visual C++ 数据库系统开发完全手册.part1

    20.9 异常处理 20.10 程序设计清单 20.11 技术、经验总结 20.11.1 技术总结 20.11.2 经验总结 20.12 系统的编译与发行 第21章 Visual C++ 6.0在学生管理系统中的应用 21.1 学生管理系统概述 21.1.1 开发背景及意义 ...

    java课程设计指导书.doc

    锻炼学生综合运用JA VA 程序设计处理所学的知识实际分析问题、解决问题的能 为导向,从可行性研究开始,经过系统分析、系统设计、系统实施等主要阶段的过程 。在设计结束后,要求学生上交课程设计的案例设计和课程...

    Java面试总结.zip

    实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考...

    嗖嗖移动大厅小项目

    在Java小白学过 面向对象设计的思想 并且熟练掌握封装、继承、多态、接口的使用 理解合理运用异常处理的方法 掌握集合框架存储数据 掌握I/O操作实现对文件的读写 之后,可练习此小项目

    Java面试知识总结.zip

    实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考...

    Java开发及面试(个人面试、工作总结、资料收集站).zip

    实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考...

    Java后台工程师面试总结.zip

    实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考...

    Android实训实习报告总结.docx

    或去google code找些开源的代码下来研究,学习人家的设计思想、模块功能的划分、代码组织结构等知识 这个过程中,涉及到的知识比较多,如版本管理工具SVN、Git、Mercurial,如设计模式Android实训实习报告总结全文共...

    一份面向Java初学者和初级工程师的知识点总结和面试题解析,着重关注面试中最常见的知识点。.zip

    实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考...

    网络安全风险总结报告.doc

    9 9 风险统计 9 10 分析结论 10 11 签字 10 引言 1.1目的和范围 本文XX软件进行网络安全风险分析, 找出软件设计和软件应用中存在和潜在的网络安全危害及原因,从固有设计、预防措施和 警示几方面保证产品的安全、可靠...

    Java实验报告——用户登录系统

    1、实验项目名称:用户登录系统 2、实验要求: (1)了解自定义异常的用法; (2)熟悉异常处理机制及创建自定义异常。 3、使用:在了解Java异常机制的基础上自己编写的实验报告。

    一本糊涂账-基于Swing和JDBC开发的图形界面桌面应用

    本项目是基于Swing和JDBC开发的图形界面桌面应用,涵盖了J2SE的绝大部分基础知识,通过这个项目能运用和锻炼几乎大部分的J2SE知识和技能。 基础内容: 面向对象 字符串数字 日期 中级内容: 异常 ,集合,JDBC,...

    2023最新Java面试题面试经验笔记项目

    实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考...

Global site tag (gtag.js) - Google Analytics