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封装了异常,其他使用该模块的开发人员很难知道模块中抛出了异常。
相关文档:
一:准备 www.savarese.org download
1. rocksaw-1.0.0-src.tar.gz
2. vserv-tcpip-0.9.2-src.tar.gz
二:编译源文件得到jar包 使用Ant
1. build vserv-tcpip-0.9.2-src
在vserv-tcpip-0.9.2目录下面建一个tests目录,然后在cmd窗口下进入 ......
JAVA序列化的两种方式
//大家都知道Serializable是一个mark interface,告诉JVM这个对象可以被转换成二进制流来传输.
//Serializable 在我们实现这个接口的时候,我们可以使用4个私有方法来控制序列化的过程:
//我们来看一个例子:
public class FooImpl implements java.io.Serializable
{
pr ......
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
我们声明了一个Str ......
这些都是您书架上必备的书和应该经常使用的 Web 链接。时间是一项重要的资源,本文帮您回避那些分心的事情,把时间专注于最有益于您作为Java 语言程序员职业生涯的信息源。尽管有多少程序员就有多少他们最喜欢的参考资料,但本文收集的这些都是优中选优,来源于我书架上的私家珍藏和许多 Java 专家的推荐。
我考虑了两种组 ......