第一:什么是异常
我们首先要认识什么是异常,在java中异常顾名思义指的是程序的运行过程中所发生的不正常事件,异常会中断正在运行的程序。
异常主要分类两类:
一类是 Error,另一类是 Exception
Exception有两个子类,一个是RuntimeException,另一种是 非运行时异常,比如IOException。
Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。
举个例子:
package com.bdqn.class0505;
import java.util.Scanner;
public class Exception {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
System.out.println("请输入被除数");
int num1 = in.nextInt();
System.out.println("请输入除数");
int num2 = in.nextInt();
System.out.println(String.format("%d/%d=%d",num1,num2,num1/num2));
}
}
这个例子看似没有问题,但当你的除数为0或者你所输入的不是整数,数字时,就会报异常。
输入数字0是所报出的异常:
输入字母、非整数所报出的异常:
第二:如何处理异常
java中处理异常是通过5个关键字来实现的, 分别是:try、catch、finally、throw、throws
try、catch、finally三个语句块均不能单独使用
三者可以组成:
try…catch…finally、
try…catch、
try…finally三种结构。
throws: throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。
throw: throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行
使用try—catch处理异常(处理上边的例子中出现的异常):
注意:catch语句可以有多个,用来匹配多个中的一个异常,一旦匹配上后,就不再尝试匹配别的catch块了。
package com.bdqn.class0505;
import java.util.Scanner;
public class Exception {
public static void main(String[] args) {
try{
Scanner in =new Scanner(System.in);
System.out.println("请输入被除数");
int num1 = in.nextInt();
System.out.println("请输入除数");
int num2 = in.nextInt();
System.out.println(String.format("%d/%d=%d",num1,num2,num1/num2));
System.out.println("感谢使用本程序");
}catch (java.lang.Exception e){
System.out.println("出现错误,请正确输入!");
e.printStackTrace();
}
}
}
如果输入0,则会有以下提示,输入字母和非整数同样如此:
使用try…catch…finally处理异常(还是上边的例子):
finally {
System.out.println("程序已经结束!");
System.out.println("感谢使用本程序!");
}