只要继承了RuntimeException(也就是传说中的运行时异常) 这个异常类就不用写try catch 和 throws。程序会直接停止运行,然后打印出这个异常。
博主java基础弱,今天写一个链表类。在写到返回第index元素的时候发现,index可能会超过链表长度,也就是一个错误。于是就想抛出一个异常,但是博主发现如果我如果throw一个异常的时候我必须try catch。博主本来想如果超过了就直接退出,因为博主感觉不能解决这个异常(但是博主就蠢蠢的当时没有想到可以在catch地方直接退出程序)然后就想如果throws向上抛出异常直到抛给jvm停止运行这样好麻烦的啊(也就以为只要一直向上抛出,一直向上抛出)!!然后我就想那ArrayList.add()必然会碰到和我一样的错误,但是没有要我们抛出异常什么的,于是就去看了看ArrayList的源码,发现他throw一个异常后,没有throws,没有try,我当时就震惊啦。然后我又看了它那个异常的源码,原来继承的是RuntimeExcepthion(运行时异常)。
然后up很高兴觉得解决了天大的问题,然后我突然想到以前try catch也可以直接退出程序,然后我才知道在catch中写上e.printStackTrace();也可以直接退出循环,真的是被博主自己的智商蠢哭- -;
也就是下面这段代码:
public class TestClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
fun(4);
}
private static void fun(int i){
if(i > 0)
try {
throw new Exception("测试");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这是ArrayList中Add调用坚持是否越界的方法,throw了一个继承了RuntimeException的异常,不用throws也不用try catch。
下面是截取的api的源码