在处理抛出异常的方法时,我们可以采用try/catch进行捕捉 或者使用throws抛出, 但具体怎么使用, 什么时候进行try/catch,什么时候进行throws? 现通过代码简要总结.
实验1 :使用try/catch
在main方法中对methord1()抛出的异常进行捕捉
import java.io.File;
import java.io.IOException;
public class ExceptionTest {
public static void main(String[] args) {
try {
methord1();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
methord2();
}
private static void methord1() throws IOException {
// TODO Auto-generated method stub
System.out.println("methord1 ");
File f = new File("");
f.createNewFile();
System.out.println("methord1111 ");
}
private static void methord2() {
// TODO Auto-generated method stub
System.out.println("methord2 ");
}
}
结果为:
methord1
java.io.IOException: 系统找不到指定的路径。
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:850)
at com.bryant.test.ExceptionTest.methord1(ExceptionTest.java:21)
at com.bryant.test.ExceptionTest.main(ExceptionTest.java:10)
methord2
methord2 方法也执行.
实验2.使用throws
修改main方法为throws methord1()抛出的异常:
public static void main(String[] args) throws IOException {
methord1();
methord2();
}
结果为:
methord1
Exception in thread "main" java.io.IOException: 系统找不到指定的路径。
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:850)
at com.bryant.test.ExceptionTest.methord1(ExceptionTest.java:17)
at com.bryant.test.ExceptionTest.main(ExceptionTest.java:10)
方法methord2 没有执行.
由此总结:
当出现的异常使程序后面无法执行时,抛出异常,结束程序.使用throws
当程序出现异常,不影响后续操作时,捕捉异常,后续程序将继续执行.使用try/catch
应该是当使用throw 时,程序跳出本方法执行,throw后面的代码不执行.