finally最终执行块和throw与throws

简介:

 如果你在写try catch的时候需要一段代码不管出现错误或者不出现错误,都执行这段代码的话,就在最后面加上finally最终执行块,而且这个finally要写在最后面,并且一个try catch只能写一个finallyfinally后面不可以再写catch。例如:

cd705416ea77ff38e27ad8598de04a4c.png

可以看到出现了异常进到了相对应的陷阱之后,这个finally依然会执行。适合用于写关闭资源的代码,因为finally无论如何都会执行,解决了以前try catchbug



throw

  throw用于抛出异常对象,这个异常可以是系统定义的,也可以是自己定义的。例如:


2411222213a577304815cc46f45bb5f5.png


构建异常对象被throw抛出后就会进入到对应的异常陷阱里,执行陷阱里的代码。如果没有相对应的陷阱就会往外抛,直到抛到main方法外位为止。

 

 

 

  例如在封装属性里就可以用到throw,因为当经过判断条件为false就可以抛出一个异常来提示客户操作有问题。例如:

e556f714764ad529972a3f16157b26e2.png

  


  这句throw后面是不可以再写代码的了,如果想在这之后执行一些代码可以使用try catch里的finally。例如:

bb060208f0391a686a193376e847510c.png


throws

    throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常),调用该方法时需要使用try catch处理这个异常或者继续抛出这个异常,不然就会直接报语法错误(继承于RuntimeException类的除外)。例如:

0b94852c19e049aba50d11ab829d1c60.png


  如果抛出的是RuntimeException或继承于这个类之下的异常就不会要求对异常进行处理。例如:

f0cbca7b7c5f278bfb9c41c4830a081a.png




方法抛出异常:

方法就是任务的封装,或者功能的封装,如果一旦出现问题,无论是参数合法性还是调用别的方法有异常,都必须反映出去,不可以处理后没有任何提示,没有任何提示的话用户也无法得知自己的操作是否是正确的。

 

throws可以抛出多个异常声明,只需要在异常之间用逗号隔开就可以了。例如:

2929db0ff63fa6111693db453d4d0863.png


异常的抛出机制主要就是用于提醒客户的操作是否有问题,或者哪里的代码运行时出现了异常,所以异常陷阱里也必需要写有一些代码来提示用户,不能什么都不写,什么都不写出现错误了,也不知道是怎么回事,这就失去了异常处理的意义了。




本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1974351,如需转载请自行联系原作者

相关文章
每日一道面试题之try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
每日一道面试题之try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
179 0
|
5月前
|
网络协议 Java 数据库连接
13 Java异常(异常过程解析、throw、throws、try-catch关键字)
13 Java异常(异常过程解析、throw、throws、try-catch关键字)
138 2
try catch finally,try 里面有 return,finally 还执行吗?
try catch finally,try 里面有 return,finally 还执行吗?
91 0
|
8月前
|
存储 缓存 IDE
细琢磨,try catch finally 执行顺序与返回值
细琢磨,try catch finally 执行顺序与返回值
81 0
try...catch中,catch加了return,后面的代码是不会执行的
try...catch中,catch加了return,后面的代码是不会执行的
113 0
Java 最常见的面试题:try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
Java 最常见的面试题:try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
|
JSON 安全 前端开发
替代try catch处理异常的优雅方式
替代try catch处理异常的优雅方式
|
编译器
throw后报错,找不到报错处。throw、throws 、try/catch 作用区别,自定义Exception异常,printStackTrace()方法的
throw后报错,找不到报错处。throw、throws 、try/catch 作用区别,自定义Exception异常,printStackTrace()方法的
176 2
try-catch-finally结构的finally语句 一定会执行吗? fianlly语句遇到System.exit(0);一定不执行吗?
try-catch-finally结构的finally语句 一定会执行吗? fianlly语句遇到System.exit(0);一定不执行吗?
183 0
try-catch-finally结构的finally语句 一定会执行吗? fianlly语句遇到System.exit(0);一定不执行吗?
|
缓存 前端开发 Java
如何优雅的实现 try catch 异常块?
如何优雅的实现 try catch 异常块?
309 0
如何优雅的实现 try catch 异常块?