Java异常及异常的处理
一、异常
- 概念: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。
1. 编译时异常(非RuntimeException、Checked异常)
- 在执行 javac.exe 命令时可能出现的异常
例如:
- IOException
- FileNotFoundException
2. 运行时异常(RuntimeException、属于UnChecked异常)
- 在执行 java.exe 命令时可能出现的异常
例如:
- InputMismatchException
- ArithmeticException
- NumberFormatException
- ClassCastException
- NullPointerException
- ArrayIndexOutOfBoundsException
具体代码的实现:
InputMismatchException:
@Test
public void test6(){
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
System.out.println(num);
scanner.close();
}
ArithmeticException:
@Test
public void test5(){
int i = 10;
int j = 0;
System.out.println(i / j);
}
NumberFormatException:
@Test
public void test4(){
String str = "123a";
int num = Integer.parseInt(str);
System.out.println(num);
}
####后面的就不举例了,都是一些常见的运行时异常。。。。
二、异常的处理
java中对异常的处理方式为:抓抛模型
1. 抓
- try-catch-finally
//空指针异常
@Test
public void test1(){
String[] strings = null;
try {
System.out.println(strings[0]);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
说明:
- finally是可选的。
- try中包含的是可能存在异常的代码。一旦执行,出现了异常,就会声明相应的异常类的对象,此对象在catch结构
- 中进行匹配,一旦匹配。就进入catch中进行异常的处理。处理完以后,就不会再匹配后续的catch结构。而是退出try-catch
- 结构,继续执行其后的代码。
- 3.多个catch中的异常类型如果满足子父类关系,则必须将子类声明在父类catch结构的上面,否则报错。
- 如果不满足子父类关系,则孰上孰下都可以。
- 4.常见的异常处理的方式:
方法1: getMessage() ;
方法2:printStackTrace();- 5.try结构中声明的变量,在出了try结构以后就不可以被调用。
- 6.try-catch-finally结构可以嵌套
2. 抛
- 程序在正常的执行过程中,一旦出现异常,就会在异常代码处生成对应异常类的对象,并将此对象抛出。
- 对象一旦抛出,在没有处理异常的情况下, 程序就不再向下执行。