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

班级网站建设策划书免费的推广软件下载

班级网站建设策划书,免费的推广软件下载,网站前后台建设难吗,wordpress主题修改软件在JDK 7中 #xff0c;向Throwable类#xff08; Exception和Error类的父类#xff09;添加了一个新的构造函数和两个新方法。 添加了新的构造函数和两个新方法以支持“抑制的异常”#xff08;不要与吞咽或忽略异常的不良做法相混淆#xff09;。 在本文中#xff0c;我… 在JDK 7中 向Throwable类 Exception和Error类的父类添加了一个新的构造函数和两个新方法。 添加了新的构造函数和两个新方法以支持“抑制的异常”不要与吞咽或忽略异常的不良做法相混淆。 在本文中我将探讨为什么引入这些方法以及它们在JDK 7中的使用方式。我简短讨论了抑制异常与链式异常的不同之处。 被抑制的异常在新的Java 7 try-with-resources语句 也称为自动资源管理 [ ARM ]的执行中起着重要作用。 为这种新的资源管理功能提供API支持似乎是Throwable类上新的构造函数和方法的主要驱动程序它们提供对抑制的异常的访问但是API支持在try-with-resources语句之外使用抑制的异常。 。 遇到受抑制的异常的最常见用例是当try-with-resources语句这是一种尝试类型根据Java语言规范Java SE 7 Edition 14.20 它不需要catch或finally子句时遇到一个异常。 try块中的异常然后在隐式尝试关闭相关资源时遇到另一个异常。 为了说明这种情况我组成了自己的“资源”可以在try-with-resource语句中使用它因为它实现了java.lang.AutoCloseable接口。 当使用它的代码尝试使用它时此“顽皮资源”会故意引发异常然后在调用重写的close方法由AutoCloseable接口指定的唯一方法时引发另一个异常从而继续其不良形式。 接下来显示NaughtyResource的代码清单。 NaughtyResource.java package dustin.examples;/*** Resource that throws exceptions both in its use and its closure and is only* intended for use in demonstrating Java 7s suppressed exceptions APIs. This* is not a well-behaved class.* * author Dustin*/ public class NaughtyResource implements AutoCloseable {/*** Method that intentionally throws an exception.* * throws RuntimeException Thrown no matter how you call me.*/public void doNothingGood(){throw new RuntimeException(Nothing good can come of this.);}/*** The overridden closure method from AutoCloseable interface.* * throws Exception Exception that might be thrown during closure of this* resource.*/Overridepublic void close() throws Exception{throw new UnsupportedOperationException(Not supported yet.);} } 现在有了顽皮的资源是时候使用顽皮的资源并演示抑制异常API。 下一张图片描述了如果尝试使用此资源而不捕获close方法隐式抛出的Exception且未声明该方法抛出该异常的情况将发生什么情况。 这是javac提供的错误消息如以下屏幕快照所示。 我已经显示了前两个屏幕快照以强调对资源执行的隐式关闭调用。 NetBeans编辑器和控制台中显示的错误消息清楚地表明了这种情况。 下一个代码清单包含编译的SuppressedExceptions类的第一个版本。 SuppressedExceptions.java版本1 package dustin.examples;/*** Demonstrate JDK 7s Suppressed Exceptions API support.* * author Dustin*/ public class SuppressedExceptions {/*** Executable function demonstrating suppressed exceptions.* * param arguments The command line arguments; none expected.*/public static void main(String[] arguments) throws Exception{try (NaughtyResource naughty new NaughtyResource()){naughty.doNothingGood();}} } 尽管在执行上述代码时确实遇到了两个异常一个在NaughtyResource.doNothingGood调用的try块中一个在隐式调用close方法的调用中但只有一个渗透到顶部并在应用程序显示时显示运行。 下一个屏幕快照对此进行了演示。 如最后一个图像所示仅显示在try-with-resources语句的try try块中遇到的异常。 在这里可以向Throwable在这种情况下为Exception询问其受抑制的异常的功能非常有用。 为了证明这一点接下来显示SuppressedExceptions类的版本2使用Throwable.getSuppressed 。 SuppressedExceptions.java版本2 package dustin.examples;import static java.lang.System.err;/*** Demonstrate JDK 7s Suppressed Exceptions API support.* * author Dustin*/ public class SuppressedExceptions {/*** Method that uses NaughtyResource with try-with-resource statement.* * throws Exception Expected exception for try-with-resource used on the* NaughtyResource.*/public static void performTryWithResource() throws Exception{try (NaughtyResource naughty new NaughtyResource()){naughty.doNothingGood();} }/*** Executable function demonstrating suppressed exceptions.* * param arguments The command line arguments; none expected.*/public static void main(String[] arguments){try{performTryWithResource();}catch (Exception ex){err.println(Exception encountered: ex.toString());final Throwable[] suppressedExceptions ex.getSuppressed();final int numSuppressed suppressedExceptions.length;if (numSuppressed 0){err.println(\tThere are numSuppressed suppressed exceptions:);for (final Throwable exception : suppressedExceptions){err.println(\t\t exception.toString());}}}} } 上面的应用程序将打印出所有抑制的异常。 在这种情况下尝试关闭NaughtyResource时遇到的异常现在显示为被抑制的异常之一。 下一个屏幕快照对此进行了演示。 如Java教程中所述我们看到唯一抛出的异常是在try-with-resources语句的try块中遇到的异常并且在资源关闭期间遇到的第二个异常被“抑制”但仍可从实际抛出异常。 不需要使用try-with-resources来处理抑制的异常。 下一个代码清单将SuppressedExceptions改编为使用更传统的try-finally。 SuppressedExceptions.java版本3 package dustin.examples;import static java.lang.System.err;/*** Demonstrate JDK 7s Suppressed Exceptions API support.* * author Dustin*/ public class SuppressedExceptions {/*** Method that uses NaughtyResource with JDK 7 try-with-resource statement.* * throws Exception Expected exception for try-with-resource used on the* NaughtyResource.*/public static void performTryWithResource() throws Exception{try (NaughtyResource naughty new NaughtyResource()){naughty.doNothingGood();} }/*** Method that uses NaughtyResource with traditional try-finally statement.* * throws Exception Exception thrown during use of NaughtyResource.*/public static void performTryFinally() throws Exception{final NaughtyResource naughty new NaughtyResource();try{naughty.doNothingGood();}finally{naughty.close();}}/*** Executable function demonstrating suppressed exceptions.* * param arguments The command line arguments; none expected.*/public static void main(String[] arguments){try{ // performTryWithResource();performTryFinally();}catch (Exception ex){err.println(Exception encountered: ex.toString());final Throwable[] suppressedExceptions ex.getSuppressed();final int numSuppressed suppressedExceptions.length;if (numSuppressed 0){err.println(\tThere are numSuppressed suppressed exceptions:);for (final Throwable exception : suppressedExceptions){err.println(\t\t exception.toString());}}else{err.println(\tNo Suppressed Exceptions.);}}} } 上面的代码调用了一种使用try-finally的方法其行为与try-with-resources示例的行为不同如下面的屏幕快照所示。 try-finally显示尝试关闭资源时遇到的异常而不是使用资源时遇到的异常上面显示的try-with-resources相反。 另一个不同之处是即使在try-finally情况下作为抑制的异常其他异常也不可用。 这是一个广为宣传的 “ 丢失的异常 ”问题的示例 该问题可能包含潜在的“琐碎”异常关闭资源而隐藏了潜在的更重要的异常实际上是在使用资源。 如果我想同时查看NaughtyResource的使用和关闭过程中引发的异常以及try-finally可以使用Throwable.addSuppressedThrowable 如下面的代码清单所示。 在该清单中对try和finally子句进行了增强以捕获使用NaughtyResource期间引发的异常并将捕获的异常添加到实际抛出的异常中作为抑制的异常。 SuppressedExceptions.java版本4 package dustin.examples;import static java.lang.System.err;/*** Demonstrate JDK 7s Suppressed Exceptions API support.* * author Dustin*/ public class SuppressedExceptions {/*** Method that uses NaughtyResource with JDK 7 try-with-resource statement.* * throws Exception Expected exception for try-with-resource used on the* NaughtyResource.*/public static void performTryWithResource() throws Exception{try (NaughtyResource naughty new NaughtyResource()){naughty.doNothingGood();} }/*** Method that uses NaughtyResource with traditional try-finally statement.* * throws Exception Exception thrown during use of NaughtyResource.*/public static void performTryFinally() throws Exception{final NaughtyResource naughty new NaughtyResource();Throwable throwable null;try{naughty.doNothingGood();}catch (Exception usingEx){throwable usingEx;}finally{try{naughty.close();}catch (Exception closingEx){if (throwable ! null){closingEx.addSuppressed(throwable);throw closingEx;}}}}/*** Executable function demonstrating suppressed exceptions.* * param arguments The command line arguments; none expected.*/public static void main(String[] arguments){try{ // performTryWithResource();performTryFinally();}catch (Exception ex){err.println(Exception encountered: ex.toString());final Throwable[] suppressedExceptions ex.getSuppressed();final int numSuppressed suppressedExceptions.length;if (numSuppressed 0){err.println(\tThere are numSuppressed suppressed exceptions:);for (final Throwable exception : suppressedExceptions){err.println(\t\t exception.toString());}}else{err.println(\tNo Suppressed Exceptions.);}}} } 修改后的类的输出如下所示。 注意由于使用资源本身而导致的异常现在与作为抑制的异常而引发的异常相关联。 尽管此处未显示但Throwable现在还提供了一个构造函数该构造函数允许通过布尔参数指定新实例化的Throwable是否允许启用抑制的异常禁止。 查看抑制异常的另一个角度是完整堆栈跟踪。 以下三幅图像是使用try-with-resources显式显示假定的异常使用传统的try-finally语句而未显式添加抑制的异常因此在full stack跟踪中没有抑制的异常导致的完整堆栈跟踪的屏幕快照。 并使用传统的try-finally方法并明确添加抑制的异常因此确实会出现在完整堆栈跟踪中。 我在每个图像上都添加了一条红线以单独显示整个堆栈跟踪结束的位置并在适用的情况下圈出了对抑制异常的显式引用。 抑制的异常与链接的异常 禁止的异常与链接的异常不同 。 链接异常是JDK 1.4引入的旨在使轻松跟踪异常之间的因果关系成为可能。 通常链接的异常是由于将新引发的异常与已捕获并导致引发新异常的异常相关联而导致的。 例如可能会引发未检查的异常从而“包装”已捕获的已检查的异常并且可以将它们链接在一起。 JDK 7引入了抑制的异常它与因果关系无关而与在单个抛出的异常中表示可能相关但不一定因果的多个例外条件有关。 在上面的我的顽皮资源示例中顽皮资源在其唯一方法被调用时的异常并不是导致它在调用其close方法时引发异常的原因。 因此将两个异常关联起来通过抑制的异常机制比强迫一个异常似乎是造成连锁关系中另一个异常的原因更有意义。 通过比较Throwable访问每种类型的方法最快速地了解链式异常与抑制型异常之间的区别可能是最容易的。 对于链式异常将调用特定的ExceptionThrowable方法。 此方法返回导致Throwable的单个实例。 可以询问返回的Throwable的原因并在导致Throwables的整个过程中重复该过程。 重要的观察结果是每个给定的Throwable都有一个导致Throwable的原因。 这可以与Throwable在调用其getSuppressed方法时提供多个抑制的Throwable在数组中的能力进行对比。 NetBeans推荐尝试资源 在此值得注意的是NetBeans会警告您尝试使用try-finally并建议使用try-with-resources替换它如我在我的文章《 用于现代化Java代码的七个NetBeans提示》和下面显示的屏幕快照中所讨论的。 结论 我相信很明显为什么NetBeans建议开发人员将对资源处理的最后尝试更改为try-with-resources语句。 通常最好先了解资源上的哪个操作导致了异常但是如果需要的话也能够在关闭时访问异常是很不错的。 如果必须选择我通常会对执行期间的资源问题更感兴趣因为关闭问题可能是该问题的衍生形式。 但是两者都更好。 传统的try-finally最终仅列出关闭时的异常而无需付出额外的努力来中继这两者。 try-with-resource语句不仅更简洁 由于内置支持包含抑制的异常它也更加有用。 参考 JCG合作伙伴 Dustin Marx在Inspired by Actual Events博客上提供了Java 7对抑制异常的支持 。 翻译自: https://www.javacodegeeks.com/2012/04/java-7s-support-for-suppressed.html
http://www.pierceye.com/news/350528/

相关文章:

  • 东宁网站制作公司产品彩页设计
  • 郑州大搜索网站为什么要建立网站
  • 广东网站建设公司排名网页设计模板网站免费
  • 佛山网站建设小程序注册营业执照申请
  • 网站建设文案策划鞍山兼职吧
  • 手机投资网站合肥seo优化排名公司
  • 上海网站制作公司的排名药品网站如何建设
  • 模板网站建设包括哪些wordpress怎么加关键词和描述
  • 温岭专业自适应网站建设响应式网站 模版
  • 高端包装设计优化 英语
  • 佛山新网站建设方案笔记本做网站服务器
  • c 企业网站开发杭州百度人工优化
  • 瑞安公司网站建设wordpress 主题和插件下载失败
  • 茶楼网站模板wordpress后台图
  • 做网站的流程方法wordpress 导航栏 排序
  • 当当网书店网站建设案例照片制作相册
  • 手机网站空间wordpress改微博系统
  • 东莞阿里网站设计泰安网站营销推广
  • 网站可以换域名吗北京建站公司兴田德润很好
  • 烟台做网站建设大宗商品交易平台是什么
  • 网站安全建设目标昆明网站制作企业
  • 个人网站更换域名企业网站建设套餐价格
  • 什么网站做海宁的房产好自己做软件 做网站需要学会哪些
  • 品牌网站建设浩森宇特软件工程师年薪多少
  • 做网站没有数据库ppt模板制作免费
  • 网站建设代码合同重庆住房和城乡建设部网站的打印准考证
  • 天气网站建设wordpress yasaer
  • 无忧网络网站建设响应式网页设计技术有哪些
  • 非常好的网站建设公司上海如何批量建站
  • 珠海市官网网站建设品牌深圳创业补贴去哪里申请