1.异常的介绍:
Throwable
子类 Error 这是错误无法处理
Exception 异常
子类 RuntimeException 运行时异常
子类 IndexOutOfBoundsException 下标越界异常
ArithmeticException
上面是常用的一部分异常,一般我们处理的都是运行时异常和编译时异常。
出现异常如何处理?
try{
可能出异常的代码
}catch(可能出的异常){
出异常怎么办
}finally{
一定会执行!除法退出jvm
}
不处理的异常printStackTrace方法会被jvm调用,并打印出异常堆信息
只要程序出异常,jvm会自动创建一个相应的异常类的对象。
throws 抛出异常
对于编译时异常,可以使用throws将异常拋出去,拋给方法的调用者,该异常由方法的调用者处理。
异常是由谁引起的,就谁处理!例如
public void a(){
这里处理异常
b(给值);
}
public void b(String a){
出错
}
通常编译时异常拋到main方法就不再往上拋,因为再拋就拋给虚拟机了。
方法的重写时,重写的方法不能拋出比父类更大的异常(不能是父类拋出的异常的父类)
运行时异常是自动拋出的。
自定义异常
通常自定义异常都是自定义运行时异常,所以只需要继承RuntimeException
自定义异常主要是通过类的名字来提示异常的类型