java异常类与异常处理
1 什么时异常
代码再编译执行的过程中可能会出现一些无法避免的各种各样的问题,这些问题无法完全的解决,只能进行避免。
例如:用户在计算除法时将除数输入0 、在进行数组元素赋值时输入的下标超出元素下标范围等情况,都有可能会发生,但又不一定会发生,作为开发人员,我们能做到的就是避免这些问题的同时对这些情况发生时进行处理。
2 java中的一些常见异常类型
ArrayIndexOutOfException | 数组下标越界异常 | 用非法索引访问数组时抛出的异常,如果索引为负或大于等于数组大小,则该索引为非法索引 |
ArrayStoreExption | 数组元素类型不匹配异常 | 定义三个不同类型的元素对象,这三个元素对象相互组合,就会出现数组元素类型不匹配异常。试图将错误类型的对象储存到一个对象数组时抛出异常。 |
ClassCastException | 强制类型转换异常 | 在进行转换时,转换的两个类型不匹配,就会发生异常。 |
IndexOutOfBoundsException | 索引越界异常 | 索引越界异常在某排序索引(例如对字符串或数组的排序)超出范围是抛出 |
NullPointerException | 空指针异常 | a.调用null对象的实例方法 b.访问或修改null对象的字段 c.应用程序应该抛出该类实例,只是其他对null对象的非法使用 |
NumberFornatException | 数字格式转换异常 | 试图把一个字符串转换成一个数值类型,但这个字符串没有恰当的格式时就会抛出数字格式转换异常。 |
StringIndexOutException | 字符串索引越界异常 | 用非法索引访问字符串抛出的异常 |
UnsupportedOperationException | 操作错误 | Arrays.asList()返回java.util.Arrays$ArrayList,而不是ArrayList。 |
ArithmeticException | 除0发生算数异常 | 一个被除数为0 |
ClassNotFoundException | 找不到指定类时发生的异常 | a.当程序加载Class类中的forName()方法时,异常抛出。 |
NoSuchMethodException | 请求的方法不存在 | 在构造时提供并通过getException()方法访问的"加载类是引发的可选异常", |
3 java中处理异常的方式
java中的异常处理方式又两种:
a.使用try-catch进行捕获处理,将可能发生异常的代码放在try{}中进行捕获
try {
有可能出现异常的代码
} catch (异常对象) {
针对当前异常对象的处理方式
}
try {
有可能出现异常的代码
} catch (异常对象) {
针对当前异常对象的处理方式
} finally {
无论代码异常情况如何处置,finally大括号以内内容一定会执行。一般用于资源处理。
}
try{
int i = 10/0;
}catch (ArithmeticException e){
new throw ArithmeticException(e);
}
b.使用throw throws进行异常抛出
关键字:
throw
在方法中根据当前判断条件或者发生异常的情况,抛出异常到方法外
throws
在方法的声明位置,告知调用者当前方法有哪些异常抛出
public void test() throws ArithmeticException{
if(i = 0){
new throw ArithmeticException();
}
}