欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java基础——异常

程序员文章站 2022-03-13 22:07:38
...

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

异常处理:

可以挖很多个陷阱,但是不要都是一样的陷阱,要不然没有意义。
一旦发生异常,产生一个异常对象,立即终止代码向下执行,寻找陷进处理异常,如果当前陷阱无法接受异常对象,就会向外抛,一直抛给能处理异常的陷阱。

异常捕获:
异常捕获是一种特殊的处理机制,跟if else不一样。If else是通过一个条件判断来进行分支,异常一旦发生就终止代码运行,马上去找捕获区(处理者)进行相应的处理。

捕获语法: try{
//可能会出错的代码
}catch(陷阱类型){
处理
}

例题1:打印结果为1、2、3、5、6.
S.toString();出现了异常直接跳到了NullPointerException e 陷阱中,把4号的代码终止了,因为s.toString 出现了出错直接抛给了陷阱。进入陷阱后进行了相应的处理,代码再往下走。

Java基础——异常
            
    
    博客分类: java  

例题2:
打印结果:1、2、5、7。
执行过程:从main方法开始,打印了“1”、“2”,发生了一个不能被0整除的错误,抛给了ArithmeticException e陷阱,打印了“5”、“7”。

Java基础——异常
            
    
    博客分类: java  

例题3:
打印结果:1、2、1、3、6、7.
执行过程:先打印1,然后打印2, 1/1=1, 打印1,接着打印3,最后申请一个数组,数组长度为1,发生了数组下标越界错误,走进了(ArrayIndexOutOfBoundsException e)陷阱,走进陷进后打印了6,最后打印了7。

Java基础——异常
            
    
    博客分类: java  

例题4:
打印结果:1、2、3。
执行过程:先打印了1、2、3,然后出现了下标越界错误,代码中并没有挖下标越界错误的陷阱,它是无法执行的。Java的原理:异常一旦抛出,就会疯狂的找对应异常的陷阱,找不着就往外面找,终止外面的代码执行,外面在找不着再往最外面找。会导致一直终止代码。

Java基础——异常
            
    
    博客分类: java  

Java基础——异常
            
    
    博客分类: java  

例题5:先执行main方法,调用了m2(); ,m2调用了m1,m1调用了m,m出现了下标越界异常,m方法中没有处理数组越界的陷阱,所以无法处理数组越界异常。无法处理就向外抛,抛给了被调用者,m1没有处理者,又抛给了m2,m2又抛给了main方法,main方法中又相应的陷阱处理,跳到了数组越界处理的陷阱中,往下执行。(如果main方法没有相应的陷阱话,就会往外抛)

Java基础——异常
            
    
    博客分类: java  

通用陷阱:
抛异常都是对象形式,对象找陷阱时候的是使用instanceof 能通过的就可以。
通用陷阱就是写他们的父类,用父类做陷阱类型,可以接受更多异常。

异常家族:Object--------Throwable
1.Exepion(程序抛出的异常) :RuntimeException(运行时异常)
2.Error (虚拟机抛出的错误)

Exepion:是一个比较严重的错误,要不然就写个try()catch{}伺候着,不然就向外抛出。 RuntimeException:这种错误是操作时的错误,这种错误一般认为,技术好有经验的话都可以避免。所以没有必要强制写try()catch{}。

通用陷阱要挖在最后,不然就独有一个。(要不然没有意义)

Java基础——异常
            
    
    博客分类: java  

finally:最终执行块。
写在最后。
出现异常,或者不出现异常都会执行finally最终执行块。

写法:
1.try()[
}finally{
}

2.try{
}catch(){
}catch(){
}finally{
}

例题:
打印结果:1、2、4。
执行过程:先执行打印1、2,然后出现不能被0整除异常,往外抛,往外抛之前要执行最终执行块。

Java基础——异常
            
    
    博客分类: java  

例题2:
打印结果:
执行过程:先执行打印1、2,然后生发一个数组越界错误,执行4,然后抛到6.因为try 的结构结束了,里面的代码执行完了。然后异常抛给了6,打印了6,接着打印7、8.

Java基础——异常
            
    
    博客分类: java