java中异常的分类
一个图,五个关键字
try、catch、finally、throw、throws
TestExceptions.java
//异常 public class TestExceptions { public static void main(String[] args) { TestExceptions te = new TestExceptions(); te.m(0); } //throws抛出ArithmeticException void m(int i) throws ArithmeticException { if(i==0) { //定义ArithmeticException的消息 throw new ArithmeticException("被除数为0"); } } }
F:\java>javac TestExceptions.java F:\java>java TestExceptions Exception in thread "main" java.lang.ArithmeticException: 被除数为0 at TestExceptions.m(TestExceptions.java:11) at TestExceptions.main(TestExceptions.java:5) F:\java>
使用try...catch捕捉异常
TestExceptions.java
//异常 public class TestExceptions { public static void main(String[] args) { try { new TestExceptions().m(0); } catch (ArithmeticException ae) { ae.printStackTrace(); System.out.println("出错了"); } } //throws抛出ArithmeticException void m(int i) throws ArithmeticException { if(i==0) { //定义ArithmeticException的消息 throw new ArithmeticException("被除数为0"); } } }
F:\java>javac TestExceptions.java F:\java>java TestExceptions java.lang.ArithmeticException: 被除数为0 at TestExceptions.m(TestExceptions.java:15) at TestExceptions.main(TestExceptions.java:5) 出错了 F:\java>
必须要捕捉的异常
TestExceptions.java
import java.io.*; //异常 public class TestExceptions { public static void main(String[] args) { //io包下的一个类 FileInputStream in = null; //一个try可以跟多个catch try { //必须要捕捉FileNotFoundException异常 in = new FileInputStream("myfile.txt"); int b; b = in.read(); while (b != -1) { System.out.print((char) b); b = in.read(); } } catch (FileNotFoundException e) { System.out.println(e.getMessage()); } catch (IOException e) { e.printStackTrace(); } finally { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } }
myfile.txt存在时
F:\java>javac TestExceptions.java F:\java>java TestExceptions a ab abc abcd F:\java>
myfile.txt不存在时
F:\java>javac TestExceptions.java F:\java>java TestExceptions myfile.txt (系统找不到指定的文件。) Exception in thread "main" java.lang.NullPointerException at TestExceptions.main(TestExceptions.java:25) F:\java>
myfile.txt
a ab abc abcd