Java异常设计方法
前些时候,把《Thinking in Java》中异常这一章翻出来再次研读,本人有些收获,并且有些观点和作者观点不太一致,共享之
1.异常的定义
一个系统中定义异常应遵循如下几个原则:
a. 系统中如果某个模块功能比较单一,建议将所有异常放在一个package内;如果某个模块有很多子模块,建议将异常放各个对应子模块内;
b. 异常名称必须是自定义的;
c. 自定义异常都继承之Exception(不要继承RuntimeException);
d. 所有异常含有含有两个构造器:一个缺省构造器,一个用于构建异常链的构造器。
示例如下:
public class MyException1 extends Exception{
public MyException1() {
}
public MyException1(Throwable cause) {
super(cause);
}
}
2.异常的处理
在异常处理程序中遵循如下原则:
a. 本方法能处理的异常,异常处理程序中就处理掉,不向外层传递;
b. 本方法不能处理的异常,必须使用异常链,封装为本模块的异常向上传递。
示例如下:
public class test {
public static void f() throws MyException1{
throw new MyException1();
}
public static void main(String[] args) throws MyException2{
try {
f();
} catch(MyException1 e) {
throw new MyException2(e);
}
}
}
【注】:Bruce Eckel指出建议使用runtimeException封装异常。本人认为,在系统设计中不应该这么做,因为在开发实际系统是,各个模块开发人员不一样,如果开发人员用runtimeException封装了异常,其他使用该模块的开发人员很难知道模块中抛出了异常。
相关文档:
import java.io.UnsupportedEncodingException;
/**
* 转换字符串的编码
*/
public class ChangeCharset
{
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final String US_ASCII = "US-ASCII";
/** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 ......
1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。
2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、 HtmlConverter、jar、
java、javac、javadoc、javap、javaw、native2ascii、seria ......
1 日志级别
oFATAL
记录影响系统正常运行,可能导致系统崩溃的事件
oERROR
记录影响业务流程正常进行,导致业务流程提前终止的事件
oWARN
记录未预料到,可能导致业务流程无法进行的事件
oINFO
记录系统启动/停止,模块加载/卸载之类事件
oDEBUG
记录业务详细流程,用户鉴权/业务流程选择/数据存取事件
oTRACE
......
管理 Java 类路径(UNIX 和 Mac OS X)
网址: http://www.ibm.com/developerworks/cn/java/j-classpath-unix/
作者的网站:http://www.cafeaulait.org/
总结:
不管类路径有多么棘手,您都可以通过一些简单的规则对它加以管制,尤其是要记住如下的一些原则:
将类放到包中。
严格遵守包和类的命名约定 ......