博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java7 对异常处理的最新处理
阅读量:7081 次
发布时间:2019-06-28

本文共 998 字,大约阅读时间需要 3 分钟。

◆Multicatch:开发者现在能够在一个catch代码块中捕获多个异常类型;

◆Final Rethrow:它可以让开发者捕获一个异常类型及其子类型,并且无需向方法声明中增加抛出子句,就能重新将其抛出。

过去我们在捕获多个异常类型时,往往会使用以下类型的代码:

 
  1. catch (FirstException ex) {  
  2.     logger.error(ex);  
  3.     throw ex;  
  4. catch (SecondException ex) {  
  5.     logger.error(ex);  
  6.     throw ex;  
  7. }  

但是以上代码除了冗长外没有什么优点。一个解决办法是找出这两个异常类型的共同子类型,只对其进行捕获并抛出。但是这种方法通常会捕获一些你并不需要的异常。

现在借助于新增的功能,开发者可以使用以下代码:

 
  1. catch (FirstException | SecondException ex) {  
  2.     logger.error(ex);  
  3.     throw ex;  

这种代码看上去要简洁清晰的多。

第二个增强功能要复杂一些。假如开发者希望捕获所有异常,在进行必要的几个操作后,再将其抛出。就代码编写而言并不是一件难事,但是开发者必须在方法声明中增加一个抛出子句,来管理自己代码发出的新异常。而现在借助于Final Rethrow,开发者无需增加一个异常抛出子句就能完成此项任务:

 
  1. try {  
  2.     // some code  
  3. catch (final Throwable ex) {  
  4.     // some more code  
  5.     throw ex;  
  6. }  
  7.  

通过使用final关键字,开发者可以抛出所需的准确动态类型异常。这样如果一个IOException异常发生,那么IOException将被抛出。当然,开发者必须声明不被捕获的异常。如果开发者在try代码块(在//some more code部分)中没有捕获任何异常,抛出子句则与以前完全相同;反之如果捕获到某些异常,开发者则可以进行相应处理。

Java 7中的multi-catch是一个非常好的功能,但是final rethrow对程序员来说并不常用。

转自:http://developer.51cto.com/art/201005/198803.htm

转载于:https://www.cnblogs.com/davidIsOK/p/3916570.html

你可能感兴趣的文章
东南大学高桓:知识图谱表示学习 | 直播预告·PhD Talk #15
查看>>
Java ThreadLocal 使用详解
查看>>
CentOS下安装JDK的三种方法
查看>>
Facebook人工智能负责人:我们可以教机器学习常识
查看>>
软件定义存储之后,下一步考虑的是什么?
查看>>
C++ 之父 Stroustrup 推出“ C++ 核心准则”
查看>>
DXC帮助全球企业和公共领域客户拥抱变革
查看>>
中国式互联网繁荣,华丽但爬满虱子的创业袍
查看>>
联想S9:遥控器值得点赞,但是莫轻言“终结”
查看>>
管理虚拟化数据中心的新方向
查看>>
芯盾时代: 开启“智慧身份认证”新时代
查看>>
2017年最流行的15个数据科学Python库
查看>>
诸葛io围绕用户的场景化分析 驱动数据价值释放
查看>>
看德国能源转型中的光伏如何破茧成蝶
查看>>
实时语音“小社交”可能吗?多元化应用之中华通
查看>>
华为将设研发机构在日本“进军物联网”
查看>>
青海首试100%清洁能源供电 暂不具备常态化推广条件
查看>>
Incorporating Copying Mechanism in Sequence-to-Sequence Learning
查看>>
中国网民近一年因垃圾诈骗信息等遭受经济损失915亿
查看>>
FBI要求破解贩毒案iPhone 苹果称他们自有方法
查看>>