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

网站建设中应注意的问题成都青白江网站建设

网站建设中应注意的问题,成都青白江网站建设,最常访问的网址,重庆游戏网站开发公司Java从一开始就支持检查异常。 在Java 8中#xff0c;语言元素lambda和支持流操作的RT库修改将功能编程风格引入了该语言。 函数样式和异常并不是真正的好朋友。 在本文中#xff0c;我将描述一个简单的库#xff0c;该库在某种程度上类似于使用Optional处理null方式处理异常… Java从一开始就支持检查异常。 在Java 8中语言元素lambda和支持流操作的RT库修改将功能编程风格引入了该语言。 函数样式和异常并不是真正的好朋友。 在本文中我将描述一个简单的库该库在某种程度上类似于使用Optional处理null方式处理异常。 该库有效毕竟它是单个类和一些内部类但实际上不是很多。 另一方面我不是绝对确定使用该库不会降低普通程序员的编程风格。 可能会有人用锤子把所有东西都看成是钉子。 锤子不是很好的修脚工具。 看看这个库更像是一个想法而不是作为一个告诉您如何创建完美的代码处理异常的最终工具。 处理检查的异常 已检查的异常必须像感冒一样被声明或捕获。 这是与null的主要区别。 评估表达式可以静默为null但不能静默引发已检查的异常。 当结果为null我们可以使用它来表示没有值或者我们可以检查并使用“默认”值代替null 。 这样做的代码模式是 var x expression; if ( expression null ){ x expression that is really never null default expression that is really never } 模式表达式是相同的尽管Java语法略有不同但表达式的求值可能会引发检查异常。 Type x; // you cannot use var here try { x expression } catch (Exception weHardlyEverUseThisValue){ x expression that does not throw exception default expression that does not } 如果第二个表达式也可以为null或可能引发异常并且如果第一个表达式失败我们需要第三个表达式甚至更多个表达式进行评估则结构可能会更复杂。 由于许多括号在抛出异常的情况下这尤其顽皮 Type x; // you cannot use var here try { try { x expression1 } catch (Exception e){ try { x expression2 } catch (Exception e){ try { x expression3 } catch (Exception e){ x expression4 }}}} catch (Exception e){ x expression that does not throw exception default expression that does not } 对于null处理我们有Optional 。 解决百万美元的问题并不是完美的这是设计一种既没null又被低估的语言的名称但是如果使用得当它会使生活变得更好。 更糟糕的是如果使用错误的方式您可以随意地说我在本文中所描述的正是这种方式。 如果结果表达式为null 则可以编写 var x Optional.ofNullable(expresssion) .orElse( expression that does not throw exception); default expression that does not exception); 你也可以写 var x Optional.ofNullable(expresssion1) .or( () - Optional.ofNullable(expression2)) .or( () - Optional.ofNullable(expression3)) .or( () - Optional.ofNullable(expression4)) ... .orElse( expression that does not throw exception); default expression that does not exception); 当您有很多替代值时。 但是如果表达式引发异常则您不能做同样的事情。 可以吗 极好的 库Exceptional https://github.com/verhas/exceptional groupId com.javax0/ groupId artifactId exceptional/ artifactId version 1.0.0/ version 实现了在Optional实现的所有方法一个或多个实现了某些方法并且某些方法的目的有所不同旨在在异常情况下使用相同的方式如上面针对null值的Optional 。 您可以使用Exceptional.of()或Exceptional.ofNullable()创建一个Exceptional值。 重要的区别在于论点不是价值而是提供价值的供应商。 该供应商不是JDK Supplier因为该Supplier无法引发异常因此整个库将无用。 此供应商必须是Exceptional.ThrowingSupplier 它与JDK Supplier完全相同但方法get()可能会抛出Exception 。 另请注意只有一个Exception 而不是Throwable正如你用裸手搭上了烧红的铁球你应该只捕捉尽可能频繁。 在这种情况下您可以写的是 var x Exceptional.of(() - expression) // you CAN use var here .orElse( expression that does not throw exception); default expression that does not exception); 它越来越短通常更容易阅读。 或者不是这就是为什么APL如此受欢迎或者是您问什么是APL 如果您有多种选择可以写 var x Exceptional.of(() - expression1) // you CAN use var here .or(() - expression2) .or(() - expression3) // these are also ThrowingSupplier expressions .or(() - expression4) ... .orElse( expression that does not throw exception); default expression that does not exception); 如果某些供应商可能会导致null不仅引发异常则有方法的ofNullable()和orNullable()变体。 orNullable()在Optional中不存在但在这里如果整个库都可以使用则是有意义的。 如果您熟悉Optional并使用更高级的方法如ifPresent() ifPresentOrElse()或orElseThrow() stream() map() flatMap() filter()那么使用Exceptional并不困难。 类中存在具有相同名称的类似方法。 再次不同的是如果Optional的方法的参数为Function 则为Exceptional时为ThrowingFunction 。 利用这种可能性您可以编写如下代码 private int getEvenAfterOdd( int i) throws Exception { if ( i % 2 0 ){ throw new Exception(); } return 1 ; } Test DisplayName ( some odd example ) void testToString() { Assertions.assertEquals( 1 , Exceptional.of(() - getEvenAfterOdd( 1 )) .map(i - getEvenAfterOdd(i 1 )) .or( () - getEvenAfterOdd( 1 )) .map(i - i.toString()).orElse( something ) ); } 也可以像下面的示例一样处理函数表达式中的异常 private int getEvenAfterOdd( int i) throws Exception { if (i % 2 0 ) { throw new Exception(); } return 1 ; } Test void avoidExceptionsForSuppliers() { Assertions.assertEquals( 14 , ( int ) Optional.of( ).map(i - 13 ).map(i - Exceptional.of(() - inc(i)) .orElse( 0 )).orElse( 15 )); } 最后但并非最不重要的一点是您可以模仿?. Groovy写作的运营商 abcdef 表达式其中所有变量/字段都可能为null并通过它们访问下一个字段会导致NPE。 您可以但是写 var x Exceptional.ofNullable( () - abcdef).orElse( null ); 摘要 记住我对锤子说的话。 小心使用并获得更大的利益。 翻译自: https://www.javacodegeeks.com/2019/05/handling-exceptions-functional-style.html
http://www.zqtcl.cn/news/596960/

相关文章:

  • 响应式网站导航栏内容泰安网站营销推广
  • 南通营销网站开发软件开发工具名词解释
  • 吉林企业网站模板建站哪个好wordpress后台新建慢
  • 整合营销的成功案例肇庆seo优化
  • 网站关键字标签合肥高端网站建设设计公司哪家好
  • 大型企业网站设计案例免费在线看片
  • 云南网站开发公司找哪家网站弹出式链接后台怎么做
  • 电商网站的支付模块怎么做企业网站建设招标文件
  • 旅游在线网站开发十八个免费的舆情网站
  • 网站怎么申请百度小程序火车头采集发布wordpress
  • 外贸网站的推广技巧有哪些莱芜网吧
  • 溧阳城乡建设局网站ps中网站页面做多大的
  • sns社交网站 有哪些wordpress开发分类筛选
  • 黄石网站建设教程网上怎样查询企业资质
  • 国内设计师交流网站怎样做自己的网站钻钱
  • 无锡专业网站推广网络营销组合策略
  • 网站建设的安全威胁中国建设银行的网站色彩
  • 中小型企业网站建设与管理潍坊做网站哪家公司最好
  • 广州白云机场网站建设免费的网站模版
  • 商务网站建设策划书51网站怎么打开
  • 一个网站里面只放一个图片怎么做中国十大网络公司排名
  • 仓库网站开发怎么看一个网站做外链
  • 网站代码编辑器中国十大黑科技
  • 深圳网站建设一尘互联遵义网站开发哪家好
  • 室内设计师灵感网站汕头网站制作全过程
  • 网站改版是什么意思自己做的小网站分享
  • 秦皇岛公司做网站wordpress社交分享非插件
  • 做物流的都是上什么网站网络维护工程师工资多少
  • 莱芜市网站建设设计设计师互联网
  • 中国设计网网址山东seo网络营销推广