java中异常的分类
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