J2EE开发过程中的异常处理

j2ee|过程|异常处理

在java里有3种异常类型:

1. 检查型异常,这样的异常继承于Excetpion,就是在编译期间需要检查,如果该异常被throw,那么在该异常所在的method后必须显示的throws,调用该method的地方也必须捕获该异常,否则编译器会抛出异常.ejb里的RemoteException是一个这样的异常.

2. 运行时异常,就是在运行期间系统出现的异常,该类异常继承于RuntimeException,该类异常在编译时系统不进行检查,如NullPointerExcetpion,NumberFormatException.

3. 系统错误,一般是JVM出现异常时抛出的异常,如OutofMemoryError,这样的异常在J2EE开发中是不用关心的.

在J2EE开发中,检查型异常被滥用以至于过一段时间程序员自己都看不懂抛出这样的异常,.里面封装的这些错误信息是干什么用的,更可怕的是有好多有用的信息找不到了.比如SQLException和RemoteException这样的异常我们没必要再进行封装,这样的异常只对我们调试程序有用,而对客户来说它就是一个”系统错误”而已.异常处理有一个简单的原则,你什么时候需要封装自己的检查型异常?就是你很清楚自己抛出这个异常的用途时,比如用户输入用户名和密码要登录,但用户名和密码不匹配,你就要定义一个检查型异常,客户端通过捕获该异常,然后把相应的错误信息反馈给客户.而其它的自己未预期的错误或者异常比如SQLException,只需封装到EJBException中,ejb container会把它的信息追加到RemoteException里,这样客户端捕获RemoteException后把它写到系统日志里,就很容易进行调试.

关于错误代码,一般反馈给客户的错误代码有两种类型:

1. 应用程序级错误,这些错误是由客户自身的原因引起的,比如输入信息有误,没有操作该功能的权限.对于这样情况,系统应给用户一个明确的提示.

2. 系统级异常,比如”未连接到服务器”,”服务器忙”,”未连接到数据库”,”系统错误”,这样的错误给客户带来的后果是不能进行操作,那么下面的戏该由系统管理员和系统开发者去演了.

个人觉得检查型异常对应于应用程序级错误,运行时异常对应于系统级异常.

时间: 2024-11-02 17:38:54

J2EE开发过程中的异常处理的相关文章

Struts开发过程中的异常处理机制

总的来说,在struts新的版本中加入了对异常的处理,称之为:Exception Handling,标志着作为一个整体的解决框架,struts原来越趋于成熟. 通常来说,以前在用struts开发的过程中,对于异常的处理,主要是采用手动处理的方式:如通过try/catch等等捕获异常,然后定制个性化的比较详细的错误信息放进ActionError中,然后在具体的返回页面中把这些错误信息反馈给用户(包括开发员).异常原始的信息不管是最终用户还是开发员都是不希望看到的. 下面着重讲一下在struts中是

Java EE项目中的异常处理总结(一篇不得不看的文章)_java

为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:"异常处理不就是try-.catch-finally吗?这谁都会啊!".笔者在初学java时也是这样认为的.如何在一个多层的j2ee项目中定义相应的异常类?在项目中的每一层如何进行异常处理?异常何时被抛出?异常何时被记录?异常该怎么记录?何时需要把checked Exception转化成unchecked Exception ,何时需要把unChecked Exception转化成checked Exception?异

一个用于J2EE应用程序的异常处理框架

在大多数Java项目中,大部分代码都是样板代码.异常处理就属于此类代码.即使业务逻辑只有3到4行代码,用于异常处理的代码也要占10到20行.本文将讨论如何让异常处理保持简单和直观,使开发人员可以专心于开发业务逻辑,而不是把时间浪费在编写异常处理的样板代码上.本文还将说明用于在J2EE环境中创建和处理异常的基础知识和指导原则,并提出了一些可以使用异常解决的业务问题.本文将使用Struts框架作为表示实现,但该方法适用于任何表示实现. 使用checked和unchecked异常的场景 您是否曾经想过

J2EE程序中使用oracle数据库LOB字段的总结(elathen)

j2ee|oracle|程序|数据|数据库 最近在J2EE的项目中需要使用LOB字段保存文本信息以及图片和文件,到网上搜拉一下,还不少,仔细看拉一下,但都不是很全有的还有错误,经过几天的实践,把问题都解决拉,顺便总结一下,希望对需要的朋友有点参考 LOB中我们用的比较多的主要有两种CLOB和BLOB,我们对两种类型分别讨论 1.CLOB是字符型LOB,主要存储文本信息,,最长为4G.,在J2EE程序中,比如网页的textarea中的字符信息比较长,Varchar2字段类型不能满足时,我们就得用C

怎样在J2EE组件中引用和查找Web服务

j2ee|web|web服务 本文将讨论怎么在J2EE组件中引用Web服务.并且通过JNDI来查找Web服务.在内容组织上,首先把一个EJB2.1无状态会话Bean发布成Web服务,然后开发基于JSP的Web服务客户端,最后着重介绍怎么在JSP的部署时引用Web服务,并且讨论怎么通过JNDI来查找和调用Web服务.阅读本文前您需要以下的知识和工具:J2EE1.4 SDK,并且会初步使用:掌握基本的JAX-RPC Web服务开发技能:了解JNDI的基本知识,能够使用它进行简单编程:一般的Java编

基于IBM Rational Build Forge实现敏捷开发过程中的持续构建

在敏捷开发过程中,软件构建周期以及自动化程度直接影响开发的速度和质量.本文结合具体的软件开发项目,描述如何利用 IBM Rational Build Forge 在敏捷开发过程中实现完全自动化的软件构建,产品安装以及单元测试,进行每天持续快速构建,提高开发团队的效率,改进产品和开发质量. 概述 敏捷开发(Agile development)是一种以人为核心.迭代.循序渐进的开发方法,开发周期一般是两星期到四星期.敏捷开发的一大原则是尽早的.持续的交付有价值的软件来使客户满意,交付的间隔时间越短越

iOS开发过程中专门在调试时运行代码的方法

在开发过程中,我们经常会使用NSLog用于跟踪调试,不过在发布的产品可能 并不希望这些调试代码被运行.这里有一个小技巧分享一下. 在编写代码时可以使用如下方式: #ifdef DEBUG< // Debug 模式的代码... #else< // Release 模式的代码... #endif 其中的DEBUG是在Xcode默认的工程中已经定义好的,也可以根据自己的实际情 况添加其他常量定义. 在Xcode中,选择导航区域左侧顶端的根节点,然后选择Project/Build Settings,在

JS及J2EE开发中解决乱码的小方法

1.设置HttpServletResponse.setContextType("text/html: charset=utf-8"): 2.在web页面用encodeURIComponent()对查询字符串进行编码.HttpServletRequest.getParameter (name)对特殊字符被进行替换.(如:+)自动替换成" "(空白字符串). 3.在进行查询字符串进行传输时,尽量对其进行base64编码,减少网络传输量.进行base64编码之后 ,必须进

Symbian学习总结-基础篇-Symbian C++中的异常处理

在现代高级语言中,大多数语言都有对应处理异常的关键字,如:C++中的try/catch,Delphi中的Try/Except/Finally,这些关键字都被编译器直接的支持. 但是,当Symbian OS C++被发明的时候,C++中的关键字try/catch/finally还没有被标准支持.而且照Symbian官方的话来说,C++的异常处理机制太笨重,不够轻量级,他们设计了一套效率更加高,更适合于小型的.内存受限的设备的异常处理机制. 一.回顾历史 在标准C++中,我们使用如下方法来处理异常: