1、异常的定义
定义:异常又称例外,是程序执行过程中发生的事件,它会终止程序的正常执行。2、异常的分类
-
Error:是JVM内部产生的,不需要程序员去解决,是不受检查异常,非代码性错误
Exception:是用户程序可能出现的异常,它是用来创建自定义异常类的类
- RuntimeException:运行时异常,程序运行期间产生的异常,编译时不会出现问题,解决方案:专业的异常处理方案|提高代码的健壮性
- CheckedException:检测时|编译时异常,由于程序编写不符合基本语法规范导致的编译时产生的错误。
常见运行时异常:
- 数组下标越界
- 空指针异常
- 数学异常
- 类型转换异常
3、异常的处理
异常抛出
使用关键字`throws`,将异常从方法内部抛到方法外部由调用它的上层方法去处理,当然上层方法也可以继续抛出,但最后也只能到`main方法`就必须要处理。异常捕获
在产生异常的地方就地捕获直接处理,使用`try-catch`结构,其中catch中包含的是对异常的处理方法,但是由于在异常种类中存在继承关系,所以就有了异常的的范围,Java语言规范要求低范围的catch放在高范围的catch的前面。4、自定义异常
自定义异常是根据编程需求编写需要的自定义异常类,必须得继承Exception
类。
实例代码
要求:从键盘输入一个整形数n,如果输入正确的话,输出10-n后的值,如果输入错误的话输出“not int”,
如果输入的不是整数,则抛出异常类:InputMismatchException。
自定义异常类(InputMismatchException.java)
public class InputMismatchException extends Exception{
public InputMismatchException(){
}
public InputMismatchException(String message){
super(message); //调用父类构造方法
}
}
测试代码(PrintInteger.java)
import java.util.Scanner;
public class PrintInteger {
/*
* 判断该数是否为10-n之间
* */
public static void isNumber(double n) throws InputMismatchException{
if(n%1==0){
System.out.println("10-"+n+"="+(10-n));
}else{
throw new InputMismatchException("not int"); //制造异常
}
}
//主函数
public static void main(String[] args) {
System.out.print("请输入一个数:");
Scanner scan=new Scanner(System.in);
double n= scan.nextDouble();
try {
isNumber(n);
} catch (InputMismatchException e) {
e.printStackTrace();
}
}
}