看几段代码:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
// 检测异常 (编译期间产生异常)
public class CheckExceptionTest {
public static void main(String[] args) {
FileInputStream fis =null;
try {
System.out.println("1");
fis = new FileInputStream("d:/nba.txt"); //找不到指定路径下的文件 ,则产生FileNotFoundException异常
System.out.println("2");
}catch (FileNotFoundException e) {
System.out.println("3");
System.out.print("产生文件找不到异常:");
e.printStackTrace();
System.out.println("4");
}
try {
System.out.println("5");
fis.close();
System.out.println("6");
}catch(IOException e){
System.out.println("7");
System.out.print("产生IO流异常:");
e.printStackTrace();
System.out.println("8");
}catch (NullPointerException e) {
System.out.print("产生空指针异常:");
e.printStackTrace();
}
System.out.println("程序正常结束了");
}
}
上面代码 要 分 3种情况讨论:
1.若程序不产生异常,正常执行的情况:
1
2
5
6
程序正常结束了
2.若程序产生异常
. 若在d:/nba.txt该路径下 不存在nba.txt文件, 则 产生 文件找不到异常
且因为FileInputStream fis =null; 则 fis.close()方法 还会产生 空指针异常
2.1没有处理产生的空指针异常 (即,把上面代码中的下面部分代码注释掉)
// catch (NullPointerException e) {
// System.out.print("产生空指针异常:");
// e.printStackTrace();
//
//
//
结果:
1
3
产生文件找不到异常:java.io.FileNotFoundException: d:
ba.txt (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:131)
at java.io.FileInputStream.<init>(FileInputStream.java:87)
at com.monkey1029.CheckExceptionTest.main(CheckExceptionTest.java:16)
4
5
Exception in thread "main" java.lang.NullPointerException
at com.monkey1029.CheckExceptionTest.main(CheckExceptionTest.java:32)
2.2 对产生的空指针异常进行了处理
1
3
产生文件找不到异常:java.io.FileNotFoundException: d:
ba.txt (系统找不到指定的文件。)
4
5
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:131)
at java.io.FileInputStream.<init>(FileInputStream.java:87)
at com.monkey1029.CheckExceptionTest.main(CheckExceptionTest.java:16)
产生空指针异常:java.lang.NullPointerException
at com.monkey1029.CheckExceptionTest.main(CheckExceptionTest.java:32)
程序正常结束了