目录
前言
我们在编写代码时经常会遇到程序报错的情况,在java中我们给这种现象起名叫做异常,其实这些各种各样的异常也是一个一个的类对象。
异常类
- 既然程序报错时出现的异常是类对象,那么就一定有异常类
- 所有异常的父类叫做throwable,而根据程序出现异常时的严重程度又分为两类
- error:一般用来描述比较严重的异常情况,例如栈内存溢出,所有继承了error类的子类都属于error异常
- exception:一般用来描述不那么严重的异常情况,例如索引越界异常,空指针异常,所有继承了exception类的子类都属于exception异常
- 异常类可以理解为是对某种错误情况的描述,在jdk中有很多异常类用来描述各种各样的情况
既然异常类只是对情况的描述那么当我们出现异常时是如何报错的呢?
抛出异常
我们都知道java的底层是由虚拟机也就是jvm控制的,main方法就是由虚拟机调用的,而异常声明以及出现异常时程序会停止也是虚拟机干的。那么怎么让jvm知道我们的程序发生了异常呢?
当程序出现异常会自动向当前程序的调用者抛出异常,当异常抛到main方法后,如果main方法没有对异常进行处理,就会将异常抛到jvm,jvm就会冲断程序给出异常声明
throw关键字
除了系统自动抛出异常,如果我们想要主动的抛出异常也可以使用throw关键字实现
我们可以new一个异常对象,异常对象一旦出现就代表程序中出现了一个问题,这时就可以使用throw将异常抛出
我们知道了异常是一个类,他的父类是谁也知道了,所以我们也可以抛出一个自定义的异常
补充
当我们创建自定义的类时可以使用构造方法传递参数,用来更加清晰的描述异常
我们将得到的参数传给父类的构造方法,这样就完成了
当我们再次调用a方法时我们传递的参数就出现在控制台旁边了,这样我们就可以让异常出现时按照我们的描述进行打印。