java中try...catch...finally相关的说明

[1] 基于if-else处理异常缺点太多,所以java中专门出了一个异常处理机制:
“异常三连” try-catch-finally
原理:把可能出现异常的代码放入try代码块中,然后将异常封装为对象,被catch后面的()中的那个异常对象接收,接收以后:执行catch后面的{}里面的代码,然后try-catch后面的代码,该怎么执行就怎么执行。

详细说一下:(1) try中没有异常,catch中代码不执行。(2)try中有异常,catch进行捕获。
如果catch中异常类型和你出的异常类型匹配的话:走catch中的代码--->进行捕获。
如果catch中异常类型和你出的异常类型不匹配的话:不走catch中的代码--->没有捕获成功,程序相当于遇到异常了,中断了,后续代码不执行。
注意:(1)try中如果出现异常,然后用catch捕获成功的话,那么try中后续的代码是不会执行的。(2)如果catch捕获异常成功,那么try-catch后面的代码该执行还是执行没有影响。

[1]在什么情况下,try-catch后面的代码不执行?(1)throw抛出异常的情况 (2)catch中没有正常的进行异常捕获 (3)在try中遇到return。
[2]怎么样才可以将try-catch后面的代码必须执行?只要将必须执行的代码放入finally中,那么这个代码无论如何一定执行。
[3]return和finally执行顺序?先执行finally最后执行return。
[4]什么代码会放在finally中呢?关闭数据库资源,关闭IO流资源,关闭socket资源。
[5]有一句话代码很厉害,它可以让finally中代码不执行! System.exit(0); //终止当前的虚拟机运行

[1]try中出现异常以后,将异常类型跟catch后面的类型依次比较,按照代码的顺序进行比对,执行第一个与异常类型匹配的catch语句。
[2]一旦执行其中一条catch语句之后,后面的catch语句就会被忽略了!
[3]在安排catch语句的顺序的时候,一般会将特殊异常放在前面(并列),一般化的异常放在后面。先写子类异常,再写父类异常。

IllegalArgumentException 非法参数异常  NullPointerException 空指针异常
[4]在JDK1.7以后,异常新处理方式:可以并列用|符号连接。

(1)层次结构:Object类--->Throwable类--->Error(错误) JVM系统内部错误,内存溢出,靠程序本身是无法解决--->程序员不关注。 Throwable类--->Exception(异常)--->检查异常
运行时异常。

防患于未然的效果,在写代码的时候就要对代码的异常进行处理。
写代码的时候,不用特意对异常进行处理,在程序运行以后,系统自动检测,然后报出异常。

[3]检查异常:处理方式1:try-catch嵌套try-catch。
处理方式2:多重catch   处理方式3:throws

总结:throw和throws的区别:(1)位置不同:throw:方法内部 throws:方法的签名处,方法的声明处 (2)内容不同:throw+异常对象(检查异常,运行时异常) throws+异常的类型(可以多个类型,用,拼接) (3)作用不同:throw:异常出现的源头,制造异常。Throws:在方法的声明处,告诉方法的调用者,这个方法中可能会出现我声明的这些异常。然后调用者对这个异常进行处理:要么自己处理要么再继续向外抛出异常。

//制造运行时异常: throw new RuntimeException(“性别不对!”);  Runtime 运行时
try{ throw new Exception();}catch(Exception e) {e.printStackTrace();} //制造检查异常

你可能感兴趣的:(springboot,java,java,开发语言)