当程序出现了不正常的情况
-
java把异常信息打印到了控制台,供程序员参考,程序员看到异常信息后,可以对程序进行修改
-
让程序更加健壮,不会因为异常就停止
2.1 异常的形式
public class Test01 {
public static void main(String[] args) {
//异常在java以类的形式存在
//通过"异常类"实例化"异常对象"
NullPointerException nullPointerException =new NullPointerException(“空指针异常”);
System.out.println(nullPointerException);//java.lang.NullPointerException: 空指针异常
ArrayIndexOutOfBoundsException arrayIndexOutOfBoundsException =new ArrayIndexOutOfBoundsException(“数组下标越界异常”);
System.out.println(arrayIndexOutOfBoundsException);//java.lang.ArrayIndexOutOfBoundsException: 数组下标越界异常
//mian方法中调用dosome()方法
//因为dosome()方法上声明有:throws ClassNotFoundException
//我们在调用dosom()方法时必须对这种异常进行预先处理
//如果不处理:编译器报错
//编译器报错信息:Error:(19, 15) java: 未报告的异常错误java.lang.ClassNotFoundException; 必须对其进行捕获或声明以便抛出
//dosome();
dosome();
//有两种方法:
//第一种:继续往上抛,因为是main方法调用的,所以在main方法上声明
//第二种方法:使用try-catch对异常进行捕捉
}
//这个方法抛出了一个异常
/*
-
dosom方法在方法声明的时候使用了 throws ClassNotFoundException
-
这个代码表示dosome()方法在执行的时候,有可能出现ClassNotFoundException异常
-
叫做类没找到异常,这个异常的父类是Exception,所以ClassNotFoundException是编译时异常
-
*/
public static void dosome() throws ClassNotFoundException{
}
}
2.2 怎么处理异常
public class Test02 {
//方法一:继续往上抛,谁调用,谁声明,抛给调用者
//一般不建议在main上方上使用throws,因为这个异常一旦发生了,一定会上抛给JVM,JVM只能终止
//异常处理机制的作用就是增强程序的健壮性。做到异常发生了,也不影响程序的执行
//所以建议main方法的异常建议使用try…catch进行捕捉,就不要上抛了
//public static void main(String[] args) throws ClassNotFoundException{
public static void main(String[] args) {
//第二种:try-catch 捕捉
//捕捉等于把异常拦下了,异常真正的解决了(调用者是不知道的)
try {
dosome();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void dosome() throws ClassNotFoundException{
}
}
2.3 try-catch理解
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.lang.reflect.Field;
public class Test03 {
public static void main(String[] args) {
System.out.println(“main begin”);
//这里使用了try - catch 所以main方法不用