刚刚一个朋友问我,为什么JDBC连接数据库的时候 Class.forName()方法必须使用try-catch 或者add throws declaration。我写了三个类试验一下。
package com.song.ExceptionThrows;
public class MyException extends Exception{
}
package com.song.ExceptionThrows;
public class ThrowsException {
public void throwException() throws MyException{
System.out.println("throw myException");
}
}
package com.song.ExceptionThrows;
public class TestExceptionThrows {
public static void main(String[] args) {
new ThrowsException().throwException();
}
}
这时 new ThrowsException().throwException();会报异常,
选择try/catch 就是在此处处理异常,或者选择将异常继续向上抛出,当此时已经是main方法时,就将异常抛出至虚拟机。
所以,Class.forName()方法必然也是抛出了一个异常,所以必须在此处处理或者继续向上抛出。