Java异常处理手段
try catch
一般方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| package exception;
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException;
public class TestException {
public static void main(String[] args) { File f= new File("d:/test.exe"); try{ System.out.println("试图打开 d:/test.exe"); new FileInputStream(f); System.out.println("成功打开"); }catch(FileNotFoundException e){ System.out.println("d:/test.exe不存在"); e.printStackTrace(); } } }
|
使用异常的父类catch
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| package exception; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; public class TestException { public static void main(String[] args) { File f= new File("d:/test.exe"); try{ System.out.println("试图打开 d:/test.exe"); new FileInputStream(f); System.out.println("成功打开"); }catch(Exception e){ System.out.println("d:/test.exe不存在"); e.printStackTrace(); } } }
|
多异常捕捉
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| package exception; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestException { public static void main(String[] args) { File f = new File("d:/test.exe"); try { System.out.println("试图打开 d:/test.exe"); new FileInputStream(f); System.out.println("成功打开"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date d = sdf.parse("2016-06-03"); } catch (FileNotFoundException e) { System.out.println("d:/test.exe不存在"); e.printStackTrace(); } catch (ParseException e) { System.out.println("日期格式解析错误"); e.printStackTrace(); } } }
|
多异常捕捉2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package exception; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestException { public static void main(String[] args) { File f = new File("d:/test.exe"); try { System.out.println("试图打开 d:/test.exe"); new FileInputStream(f); System.out.println("成功打开"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date d = sdf.parse("2016-06-03"); } catch (FileNotFoundException | ParseException e) { if (e instanceof FileNotFoundException) System.out.println("d:/test.exe不存在"); if (e instanceof ParseException) System.out.println("日期格式解析错误"); e.printStackTrace(); } } }
|
finally
无论是否出现异常,finally中的代码一定会被执行
throw和throws
throw抛出的异常如果不处理,会传递到父方法
- throws 出现在方法声明上,而throw通常都出现在方法体内。
- throws 表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某个异常对象。
Java异常分类
可查异常CheckedException
可查异常是必须进行处理的异常,要么进行try-catch,要么抛出。如果不处理,编译器不会通过。
运行时异常RuntimeException
常见的运行时异常有:
- ArithmeticException
- ArrayIndexOutOfBoundsException
- NullPointerException
错误Error
错误是指系统级别的异常,例如OutOfMemoryError