文章目录
深入try catch
1、catch后面的小括号的类型可以是具体的异常类型,也可以是该异常类的父类型
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class ExceptionText2 {
public static void main(String[] args) {
try{
FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\Java自学\\学习.txt");
System.out.println("以上出现异常,这里的代码无法执行!");
}catch(FileNotFoundException e){
System.out.println("文件不存在!");
}
System.out.println("hello world");
}
}
也可以写为多态:
try{
//创建输入流
FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\Java自学\\学习.txt");
}catch(IOException e){ //多态:IOException e = new FileNotFoundException();
System.out.println("文件不存在!");
}
或
try{
FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\Java自学\\学习.txt");
}catch(Exception e){ //多态:Exception e = new FileNotFoundException();
System.out.println("文件不存在!");
}
2、catch可以写多个
建议catch的时候,精确的一个一个处理。这样有利于程序的调试
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ExceptionText2 {
public static void main(String[] args) {
try{
//创建输入流
FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\Java自学\\学习.txt");
//读文件
fis.read();
}catch(FileNotFoundException e){ //所有异常都走这个分支
System.out.println("文件不存在!");
}catch(IOException e){
System.out.println("读文件报错了!");
}
}
}
3、catch后面异常中可以加 | 号(JDK8新特性,7不支持)
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ExceptionText2 {
public static void main(String[] args) {
try{
//创建输入流
FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\Java自学\\学习.txt");
System.out.println(100/0);//这个异常是运行时异常,编写程序时可以处理,也可以不处理
}catch(FileNotFoundException | ArithmeticException | NullPointerException e){ //所有异常都走这个分支
System.out.println("文件不存在?数字异常?空指针异常?都有可能!");
}
}
}