浏览 6356 次
锁定老帖子 主题:讨论关于项目中异常的处理
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-12-28
现在的项目中,比如说SQLException都没有向上抛。就是自己程序处理。 项目中用的struts+dao,看了IBM的那篇高级DAO编程深有感触(文章中就说DAO中不能抛出SQLException).不知道大家有什么看法? /** 此断注销 在程序中保持良好的日志习惯,现在我测试log4j的时候把配置文件放到上一级目录中,不知道怎么读取,是否要指定为绝对路径呢?(如果需要指定为绝对路径的话,那项目部署的时候会很麻烦,有知道的朋友请告知)还有如果项目中加入log4j,那整个项目中是否只需要一份log4j的配置文件呢?如果在不同的包中怎么调用配置文件呢? */ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-12-28
不知道这帖子属不属于删贴的范畴啊???
... 算了,还是回答一下。 要读取包内properties文件,用getClass.getResourceAsStream(String url)就行了。 |
|
返回顶楼 | |
发表时间:2004-12-29
如果用Struts+DAO,分层编码,Exception不抛出来的话,上一层怎么得知下一层出了什么错?
|
|
返回顶楼 | |
发表时间:2004-12-29
不是不抛异常,而是最好不抛SQLException
|
|
返回顶楼 | |
发表时间:2004-12-30
自己创建一个nochecked Exception基类
然后继承出两个子类,一个BusinessException,一个DataAccessException BusinessException里的message提示给用户,DataAccessException直接 提示系统异常. 当然这个nochecked Exception基类要支持异常链,eg. package sitech.www.frame.util; import java.lang.*; import java.io.*; public class SysException extends RuntimeException { public final static boolean release14; // A wrapped Throwable protected Throwable cause = null; protected static int errCode = -1; static { String vers = System.getProperty("java.version");; if (vers.compareTo("1.4.0"); >= 0); { release14 = true; } else { release14 = false; } } public SysException(String message); { super(message);; } public SysException(int ec, String message); { super(message);; errCode = ec; } public SysException(String message, Throwable cause); { super(message);; this.cause = cause; } public SysException(int ec, String message, Throwable cause); { super(message);; errCode = ec; this.cause = cause; } public void printStackTrace(); { // Print the stack trace for this exception. super.printStackTrace();; if (!release14 && cause != null); { System.err.println("caused by:");; cause.printStackTrace();; } } public void printStackTrace(PrintStream s); { // Print the stack trace for this exception. super.printStackTrace(s);; if (!release14 && cause != null); { s.println("caused by:");; cause.printStackTrace(s);; } } public void printStackTrace(PrintWriter w); { // Print the stack trace for this exception. super.printStackTrace(w);; if (!release14 && cause != null); { w.println("caused by:");; cause.printStackTrace(w);; } } /** * return errCode with system level * @return default -1 unclassed exception */ public int getErrorCode(); { return errCode; } /** * get the exception which this caseed by * @return source exception */ public Throwable getCause(); { return cause; } } |
|
返回顶楼 | |
发表时间:2004-12-30
似乎多次一举!
|
|
返回顶楼 | |
发表时间:2004-12-31
谢谢!最好谁能写一个Demo出来,给大家评评
|
|
返回顶楼 | |
发表时间:2005-01-08
异常无外乎两种:系统异常和业务异常,业务异常肯定是直接抛出的,至于系统异常呢,我认为在开发阶段最好还是直接抛出,要不然找出错的地方找到你死;到了要进行集成的时候,就要把系统异常封装成自定义的系统异常,出于三个方面的考虑:
1、系统安全考虑,好比sqlException,如果直接抛出,则用户有可能看到你系统的表结构; 2、封装后能进行统一的处理,即使目前不处理,但也为以后的处理作好准备; 3、样子好看点了,要知道如果用户看到一大堆乱七八糟的exception语句是会呱呱大叫的。 |
|
返回顶楼 | |