当前位置: 首页 > news >正文

网站工程师是做什么的访问的网页正在升级中

网站工程师是做什么的,访问的网页正在升级中,网站黑链,杭州产品设计公司有哪些java 8 lambda异常作弊– Java 8 Lambdas 撇开关于Checked vs Runtime异常的宗教辩论#xff0c;有时由于库的构造不佳#xff0c;处理Checked示例会使您发疯。 考虑一下您可能要编写的以下代码片段#xff1a; public void createTempFileForKey(String key) {MapStr… java 8 lambda 异常作弊– Java 8 Lambdas 撇开关于Checked vs Runtime异常的宗教辩论有时由于库的构造不佳处理Checked示例会使您发疯。 考虑一下您可能要编写的以下代码片段 public void createTempFileForKey(String key) {MapString, File tempFiles new ConcurrentHashMap();//does not compile because it throws an IOException!!tempFiles.computeIfAbsent(key, k - File.createTempFile(key, .tmp)); } 为了使其编译您需要捕获使您留下此代码的异常 public void createTempFileForKey(String key) {MapString, File tempFiles new ConcurrentHashMap();tempFiles.computeIfAbsent(key, k - {try {return File.createTempFile(key, .tmp);}catch(IOException e) {e.printStackTrace();return null;}}); } 尽管可以编译但是IOException已经有效地被吞没了。 应该通知此方法的用户已引发异常。 为了解决这个问题您可以将IOException包装在通用RuntimeException中如下所示 public void createTempFileForKey(String key) throws RuntimeException {MapString, File tempFiles new ConcurrentHashMap();tempFiles.computeIfAbsent(key, k - {try {return File.createTempFile(key, .tmp);}catch(IOException e) {throw new RuntimeException(e);}}); } 这段代码确实抛出了一个Exception但是没有抛出打算由该代码抛出的实际IOException。 那些只支持RuntimeExceptions的人可能会对此代码感到满意尤其是如果可以改进解决方案以创建自定义的IORuntimeException时。 尽管如此大多数人还是以这种方式编写代码他们希望他们的方法能够从File.createTempFile方法中抛出经过检查的IOException 。 这样做的自然方法有些复杂看起来像这样 public void createTempFileForKey(String key) throws IOException{MapString, File tempFiles new ConcurrentHashMap();try {tempFiles.computeIfAbsent(key, k - {try {return File.createTempFile(key, .tmp);} catch (IOException e) {throw new RuntimeException(e);}});}catch(RuntimeException e){if(e.getCause() instanceof IOException){throw (IOException)e.getCause();}} } 从lambda内部您必须捕获IOException将其包装在RuntimeException中并抛出该RuntimeException。 Lambda必须捕获RuntimeException的包装并重新抛出IOException。 确实非常丑陋 在理想的世界中我们需要做的就是从lambda中抛出已检查的异常而不必更改computeIfAbsent的声明。 换句话说抛出检查异常就好像它是运行时异常一样。 但是不幸的是Java不允许我们这样做… 除非我们作弊否则那不是 这里有两种方法可以精确地执行我们想要的操作即抛出检查异常就好像它是运行时异常一样。 方法1 –使用泛型 public static void main(String[] args){doThrow(new IOException());}static void doThrow(Exception e) {CheckedException.RuntimeException doThrow0(e);}static E extends Exceptionvoid doThrow0(Exception e) throws E {throw (E) e;} 请注意我们已经创建并抛出IOException而没有在main方法中声明它。 方法2 –使用不安全 public static void main(String[] args){getUnsafe().throwException(new IOException());}private static Unsafe getUnsafe(){try {Field theUnsafe Unsafe.class.getDeclaredField(theUnsafe);theUnsafe.setAccessible(true);return (Unsafe) theUnsafe.get(null);} catch (Exception e) {throw new AssertionError(e);}} 再次我们设法抛出IOException而不在方法中声明它。 无论您喜欢哪种方法我们现在都可以通过这种方式自由编写原始代码 public void createTempFileForKey(String key) throws IOException{MapString, File tempFiles new ConcurrentHashMap();tempFiles.computeIfAbsent(key, k - {try {return File.createTempFile(key, .tmp);} catch (IOException e) {throw doThrow(e);}});}private RuntimeException doThrow(Exception e){getUnsafe().throwException(e);return new RuntimeException();}private static Unsafe getUnsafe(){try {Field theUnsafe Unsafe.class.getDeclaredField(theUnsafe);theUnsafe.setAccessible(true);return (Unsafe) theUnsafe.get(null);} catch (Exception e) {throw new AssertionError(e);}} doThrow()方法显然将封装在某些实用程序类中从而使您的代码在createTempFileForKey()非常干净。 翻译自: https://www.javacodegeeks.com/2015/05/cheating-with-exceptions-java-8-lambdas.htmljava 8 lambda
http://www.sadfv.cn/news/24749/

相关文章:

  • 利川网站网站建设河南软件开发
  • 三里屯网站建设网站建设五站合一
  • 建站点的步骤网站建设杭州滨江
  • 杭州各类网站建设自建vps和买机场哪个好
  • 如何寻找做网站的客户广告公司标志
  • 网站免费建站系统 六wordpress 超商取货
  • 东莞厚街做网站网站改版的前端流程
  • 广东省住房和城乡建设网站电子商务平台的营销推广方案
  • 广告设计网站建设怎么做海南网站建设海南网络公司
  • 域名分类网站社团网站建设
  • 智能网站建设加工网站开发的发展的前景
  • 有什么网站招聘做危险高薪工作的山西电商网站开发
  • 外贸网站建设价格湘潭响塘乡建设局网站
  • 常规网站服务器福州建设高端网站
  • 全民建站网站建设计入到什么科目
  • dw做的网页在网站图片不显示企业邮箱登录界面
  • 广州公司网站制作个人用云服务器
  • 网站可以做多少优化关键词建设银行哈尔滨分行网站
  • 威海哪有网站建设甘肃农村网站建设
  • 电脑本地网站建设可以建设一个网站
  • wordpress炫酷站视频网站切片怎么做
  • 可以让网友帮做任务的网站seo比较好的公司
  • 给公司做网站 图片倾权网站模板登录模块
  • 网站建设与维护的论述题免费企业自助建站
  • 网站推广公司渠道html网页设计模板和源代码
  • wordpress更改作者信息优化型网站是什么意思
  • 天津电子商务网站接做室内效果图的网站
  • 网站 二次开发怎么做国外订房网站怎么和做
  • 网站源码防盗原理做网站免责声明
  • 石家庄市住房城乡建设局网站网站上的图文介绍怎么做