异常处理
一、异常
所有的异常类都是java.lang.Exception的子类
1、检查异常:无法避免
因为用户错误或者其他外在操作错误,导致的代码无法继续执行,引起的异常。比如:断网、处理的文件不存在等。
常见的检查性异常类:
- ClassNotFoundException:应用程序试图加载类时,找不到相应的类,抛出该异常
- IllegalAccessException:访问一个类被拒绝的时候,抛出该异常
- NoSuchFieldException:请求的变量不存在
- NoSuchMethonException:请求的方法不存在
2、运行时的异常:可以避免
运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。比如:空指针异常
常见的运行时异常类:
- ClassCastException:对象类型转换异常
- IndexOutOfboundsException:下标越界异常
- NullPointerException:空指针异常
3、捕获异常
try {
//处理可能出现异常的代码块
} catch (NullPointerException e) {
//处理异常
e.printStackTrace();//打印异常信息
} finally {
//无论是否发生异常,finally中的代码块都将在最后执行
System.out.println(“finally”);
}
注意:如果try中有return返回值,则先执行完finally中的代码,再返回数据
4、抛出异常
public static void run() {
//在本方法中,抛出一个异常
throw new NullPointerException();
}
//throws将异常抛出给上一级处理,最终将抛给jvm处理
public static void run() throws NullPointerException, ClassNotFoundException{
}
二、错误jaa.lang.Error
错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。
例如:
JVM 内存溢出。错误在编译阶段也是检查不到的。一般地,程序不会从错误中恢复。