异常处理
在Java中有一个父类Throwable,它的作用是将java运行过程中出现的问题抛出来。
他有两个直接子类,Error和Exception。
Error是指JVM运行出现了错误,是无法用代码解决的,应当尽量避免;
而Exception是程序中的错误,可以调试解决,一般采用try…catch 处理。
Exception类下分两类异常:(如上图所示)受检异常,非受检异常。
1.受检异常
当程序发生受检异常的时候,有问题的代码部分会飘红(就是出现红色
的波浪线);
2.非受检异常(RuntimeException)
当程序发生非受检异常时,程序会直接在控制台上抛出错误名称,程序中
断。
请看下面的代码:
public static int parseInt1(String a,String b) throws NumberFormatException
这里面出现了一个异常NumberFormatException,代码里,我们见这个异常抛出来了
,却没有使用try catch,这是因为它是RuntimeException的子类。这里大家要记住,
只要是RuntimeException的子类,就表示在出现异常的时候,可以直接抛出。
try catch
先看代码:
//这里创建一个可以计算两个数的商的代码,短短的几行代码,出现了很多bug
//这里针对其中的一个格式输入异常来介绍try catch的使用
import java.util.InputMismatchException;
import java.util.Scanner;
public class Num {
public void menu(){
Scanner input = new Scanner(System.in);
try {
System.out.println("请输入第一个数字:");
int a = input.nextInt();
System.out.println("请输入第二个数字:");
int b = input.nextInt();
int quotient = divide(a, b);
System.out.println(quotient);
}catch(InputMismatchException e){
System.out.println("你输入的数据有误,请重新输入!");
menu();
}
}
public int divide(int x, int y){
return x/y;
}
}
//这里创建一个对象来调用上面的类
public class Demo1 {
public static void main(String[] args) {
Num num = new Num();
num.menu();
}
}
finally
在try catch处理格式中还有一个finally语句,它作为程序的最终出口,不管是否
发生了异常都会执行。
除非电脑卡机,断电他不会执行,否则他一定执行。
他唯一的一个代码导致的不执行的情况如下:
public class Throw {
public static