Java中的异常分为两类:可检查异常和非检查异常。
运行时异常
运行时异常也称为未检查异常,指的是系统中发生的一些运行时异常,一般不要求程序进行异常处理。在出现这些异常时,程序将自动终止并打印错误信息。
常见的非检查异常包括但不限于:NullPointerException、ArithmeticException等。
非运行时异常
可检查异常也称为已检查异常,指的是程序调用了可能会引发该异常的方法,必须进行异常处理。如果程序不处理这些异常,在编译期间就会出现错误,从而防止了程序在运行期间异常崩溃。
常见的可检查异常包括但不限于:IOException、SQLException等。
异常在java中以类的形式存在,每一个异常类都可以创建异常对象。
public class Test{
public static void main(String[] args) {
int a = 10;
int b = 0;
int c = a / b;
// JVM在执行到此处的时候,会new异常对象:new ArithmeticException("/ by zero");
System.out.println(c);
}
}
在程序中,我们可以使用throw关键字抛出异常:
在方法声明的位置上使用throw关键字
抛出,谁调用我这个方法,我就抛给谁。抛给调用者来处理。
public class Main{
public static void main(String[] args) throws ClassNotFoundException {
addSome();
}
public static void addSome() throws ClassNotFoundException{
System.out.println("add");
}
}
捕捉异常
在Java中,我们使用try...catch语句来捕捉异常并进行处理:
public class ExceptionTest04 {
public static void main(String[] args) {
try {
addSome();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void doSome() throws ClassNotFoundException{
System.out.println("add");
}
}
注意:
只要异常没有被捕捉,采用上报的方式,此方法的后面代码不会执行。
try语句块中的某一行出现异常,该行后面的代码不会执行。
try...catch捕捉异常之后,后续代码可以执行。