Java中异常分为两大类:
- Error(错误)
- Exception(异常)
- RuntimeException(运行时异常,非检查时异常)
- 非运行时异常(编译时异常,检查时异常)
相同点:Error和Exception都继承自java.lang.Throwable
Error
程序无法处理的错误,对于普通的开发人员来说是很难处理的。恢复不是不可能但很困难,比如内存溢出,线程死锁等
异常
程序在编译或运行时出现的问题就称为异常,他是jvm给你报信的一种方式,通过这个方式,jvm想让你知道,你犯错了,给你一个机会你可以去改正他。所以说异常是可以被开发人员处理的。
运行时异常
运行时异常就是我们写代码的时候它不提醒我们有问题,等到运行的时候它又来找毛病,告诉你这块不行,要改。
因为运行时异常idea并不会给你提示,所以如果你能够发现这种隐藏的危险,可以选择处理或不处理。处理方式是: 一个try后面可以跟多个catch,但不管多少个,最多只会有一个catch块被执行。
常见的几个运行时异常有:NullPointerException,ArrayIndexOutOfBoundsException,ArithmeticException,ClassCastException(对象强制转换)
@Test
public void test(){
int a = 1/0;
System.out.println(a);
}
//算数运行时异常java.lang.ArithmeticException: / by zero
检查时异常
检查时异常就是我们在写代码的时候,idea给你报小红杠,让你try catch用或者throws声明继续抛给上层调用方法处理,必须处理,不处理就不让你运行。
处理方法有两种:
1.使用try…catch…finally进行捕获
2.在产生异常的方法声明后面写上throws 某一个Exception类型,如throws Exception,将异常抛出到外面一层去。
常见的检查时异常有:IOException,sqlException