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

东莞建站模板公司上海公司网站seo

东莞建站模板公司,上海公司网站seo,沈阳h5响应式网站建设,网上开店指南我最近对OpenJDK core-libs-dev邮件列表上的2019年 2月至2019年 3月的讨论感兴趣#xff0c;该讨论涉及解决缺少与NullPointerException相关联的详细消息的问题#xff0c;该消息在用其无参数构造函数实例化后抛出。 这是我在使用Java时经常遇到的一个问题#xff0c;甚至导… 我最近对OpenJDK core-libs-dev邮件列表上的2019年 2月至2019年 3月的讨论感兴趣该讨论涉及解决缺少与NullPointerException相关联的详细消息的问题该消息在用其无参数构造函数实例化后抛出。 这是我在使用Java时经常遇到的一个问题甚至导致我在某些情况下更改代码以更好地解决该问题。 在许多情况下如果语句中仅存在一个NullPointerException可能来源并且堆栈跟踪中有行号不是则NullPointerException NPE可以是更容易解决的异常之一或至少诊断为null 。用-g:none 编译 。 尽管对于Java NullPointerException来说尤其具有挑战性但是即使在某些情况下即使对于有经验的Java开发人员没有消息的NullPointerException也会令人失望。 没有与NullPointerException关联的消息时最明显的情况是给定语句中有多个候选者可能抛出NullPointerException 。 这种情况的一个示例是以这种方式在每个先前方法的返回对象上调用方法 getA().getB().getC()... 其中每个方法都可能返回null 。 另一个示例是如果调用者将null传递给被取消引用为原始类型的方法则方法或构造函数的原始数据类型的多个参数可能导致NullPointerException 。 增强功能JDK-8218628 “向NullPointerException添加详细消息描述什么为null。”解决了其中一些情况。 此增强功能的描述指出“获取NPE时通常很难确定表达式中的哪个引用为空。 这项更改会添加一条消息告诉您。” 此增强功能还提供了一些Java语句示例这些示例通常会导致NullPointerException并可能令人沮丧地缺乏细节。 我已经在GitHub托管的类NpeDemo中捕获了与这些示例类似的情况请参阅此版本以匹配下面输出中的行号。 当执行这些演示示例它们全部有意抛出NPE时使用默认设置进行编译时输出显示如下如下所示仍提供完整的堆栈信息 | # | # 1 : Element [ null boolean array | ] on : Element [ 0 ] on java.lang.NullPointerException at dustin.examples.npe.NpeDemo.demonstrateFirstExampleIndexAccessOnNullBooleanArray(NpeDemo.java: 37 ) at dustin.examples.npe.NpeDemo.demonstrateJdk8218628Examples(NpeDemo.java: 179 ) at dustin.examples.npe.NpeDemo.main(NpeDemo.java: 310 ) | # | # 2 : .length on null boolean [] | java.lang.NullPointerException at dustin.examples.npe.NpeDemo.demonstrateSecondExampleLengthOnNullBooleanArray(NpeDemo.java: 59 ) at dustin.examples.npe.NpeDemo.demonstrateJdk8218628Examples(NpeDemo.java: 180 ) at dustin.examples.npe.NpeDemo.main(NpeDemo.java: 310 ) | # | # 3 : Assigning float : Assigning to null float [] | java.lang.NullPointerException at dustin.examples.npe.NpeDemo.demonstrateThirdExampleAssigningValueToElementOfNullFloatArray(NpeDemo.java: 80 ) at dustin.examples.npe.NpeDemo.demonstrateJdk8218628Examples(NpeDemo.java: 181 ) at dustin.examples.npe.NpeDemo.main(NpeDemo.java: 310 ) | # | # 4 : Accessing field on null object | : Accessing field on object | java.lang.NullPointerException at dustin.examples.npe.NpeDemo.demonstrateFourthExampleAccessInstanceFieldOfNullObject(NpeDemo.java: 101 ) at dustin.examples.npe.NpeDemo.demonstrateJdk8218628Examples(NpeDemo.java: 182 ) at dustin.examples.npe.NpeDemo.main(NpeDemo.java: 310 ) | # | # 5 : throw null ; | ; | java.lang.NullPointerException at dustin.examples.npe.NpeDemo.demonstrateFifthExampleThrowingConstantNull(NpeDemo.java: 121 ) at dustin.examples.npe.NpeDemo.demonstrateJdk8218628Examples(NpeDemo.java: 183 ) at dustin.examples.npe.NpeDemo.main(NpeDemo.java: 310 ) | # | # 6 : Method invocation on null instance field | : Method invocation on java.lang.NullPointerException at dustin.examples.npe.NpeDemo.demonstrateSixthExampleMethodInvocationOnNullInstanceField(NpeDemo.java: 141 ) at dustin.examples.npe.NpeDemo.demonstrateJdk8218628Examples(NpeDemo.java: 184 ) at dustin.examples.npe.NpeDemo.main(NpeDemo.java: 310 ) | # | # 7 : () on null instance field | () on synchronized () on instance field | java.lang.NullPointerException at dustin.examples.npe.NpeDemo.demonstrateSeventhExampleSynchronizedNullInstanceField(NpeDemo.java: 161 ) at dustin.examples.npe.NpeDemo.demonstrateJdk8218628Examples(NpeDemo.java: 185 ) at dustin.examples.npe.NpeDemo.main(NpeDemo.java: 310 ) | Null Lost in Long Series of Method Invocations in Single Statement | java.lang.NullPointerException at dustin.examples.npe.NpeDemo.demonstrateNullLostInSeriesOfMethodInvocationsInSingleStatement(NpeDemo.java: 198 ) at dustin.examples.npe.NpeDemo.main(NpeDemo.java: 311 ) | Null Lost in Dereferenced Constructor Arguments | java.lang.NullPointerException at dustin.examples.npe.NpeDemo.demonstrateNullLostInConstructorAcceptingMultiplePotentiallyNullArgumentsDereferenced(NpeDemo.java: 226 ) at dustin.examples.npe.NpeDemo.main(NpeDemo.java: 312 ) | Null Lost in Dereferenced Method Arguments | java.lang.NullPointerException at dustin.examples.npe.NpeDemo.demonstrateNullLostInMethodAcceptingMultiplePotentiallyNullArgumentsDereferenced(NpeDemo.java: 254 ) at dustin.examples.npe.NpeDemo.main(NpeDemo.java: 313 ) 上面示例中显示的NullPointerException没有提供任何消息。 但是在这些情况下罪魁祸首相对容易识别因为它们发生的方法很小并且行号直接指向抛出NPE的位置。 如果没有行号使用-g:none编译的源代码并且方法很长可能会抛出NPE的多行或者方法的重载版本具有相同的名称则将很难识别这些代码。 如果使用-g:none编译了代码则堆栈跟踪中将不会显示类名或行号[仅列出(Unknown Source)而不是文件名行号]检测起来可能会比较棘手。抛出NPE的位置特别是如果是从冗长的方法中抛出很多NPE的方法抛出的或者是从同一类中多次重载的方法抛出的尤其是仅使用方法名称就没有帮助。 上面演示的一些示例都具有NPE即使人们知道行号也很难识别NPE因为该行上有很多潜在的NPE投掷者。 在这种情况下最受JDK-8218628建议的更改。 尽管已为JDK-8218628实现了一个解决方案但此后已确定要考虑足够的考虑因素以证明JDK增强提案 JEP合理以制定出更多的设计和实现细节。 该JEP是JDK-8220715 “向NullPointerException添加详细消息描述什么为null”及其“摘要”状态“开发或维护Java应用程序时经常遇到NullPointerExceptions。 NullPointerExceptions通常不包含消息。 这使查找异常原因变得复杂。 该JEP建议增强异常文本以告知什么为空以及哪个操作失败。” JEP JDK-8220715还提供了未明确提供NPE消息时所建议的基本算法的详细描述。 文字指出在示例中抛出NullPointerException时“原始Java代码不可用”但该信息仍“存储在异常对象的backtrace字段中”该字段是“ jvm实施。” JEP JDK-8220715强调“计算此处提出的NullPointerException消息是相当大的开销”但是通过提出“延迟计算消息直到实际访问消息”来解决该问题。 换句话说仅当实例化NullPointerException时未提供显式消息时才计算“默认” NPE消息。 JEP JDK-8220715的“替代方案”部分指出“当前的提议是在Java运行时中以C 的方式实现这一点直接访问元空间中的可用数据结构。” 本节考虑了该方法的一些替代方法例如通过诸如StackWalker之类的JDK库来实现并说明了为什么建议的方法可能比该方法更可取。 有关与建议的NullPointerException消息增强功能相关的更多背景详细信息请参见OpenJDK core-libs-dev邮件列表 。 以下是该讨论中的一些帖子每篇帖子都摘录了一些有趣的内容 Goetz Lindenmaier “…从Java 5开始我们的内部VM报告详细的空指针异常消息。 我想将此功能贡献给OpenJDK。 …消息是通过解析字节码生成的。 为了在分配NPE时没有任何开销仅在通过getMessage或序列化访问消息时才生成该消息。 为此我在NPE上添加了一个字段以指示仍需要延迟计算消息。” Christoph Langer “……感谢您最终将其引入OpenJDK。 我知道有人会对这个功能很满意。” 彼得·勒瓦特Peter Levart “确保将NPE_MESSAGE_PENDING初始化为新的String“ something”否则您可能会通过字符串interning与其他人共享此常量引用……” 安德鲁·迪恩Andrew Dinn “此外如果您希望消息反映出发生异常时实际正在使用的字节码那么您确实需要通过从方法元数据中提取字节码来做到这一点。 JvmtiClassFileReconstitutor返回的字节码将不包括由ClassFileTransformer安装的任何字节码更改。 但是这可能是蠕虫病毒的潜在威胁因为方法的旧版本和新版本以及关联的字节码可以同时存在。 您需要确定方法的哪个版本以及由此产生异常的字节码。 如果您试图通过调用JVM从Java做到这一点那么我认为您将会遇到问题。” Goetz Lindenmaier “最初的实现是C 并在发生异常的位置使用给定方法*和BCI遍历元空间。 因此它仅使用内存中已经存在的数据。 请参阅jvm.cpp中的JVM_GetExtendedNPEMessage。 想法是使用StackWalker和ASM在Java中实现这一点。 如果我有正确的字节码和正确的起点ASM将有助于实现我认为的分析。” Mandy Chung “我们都认为改善NPE消息是对该平台的有用增强并有助于开发人员确定NPE的产生原因。 ……这将引发有关提案功能的讨论然后再讨论在VM库或组合中实现该功能的最佳方法。” Maurizio Cimadamore “……此增强功能将是对我们平台的重要补充……我也认为这种增强功能的设计空间并不平凡最好在一种非媒介的介质中进行探索并捕获。补丁。” Goetz Lindenmaier “…消息的措辞更好……尤其是对前几条消息他们指出了此更改的有用性。 他们恰好说了一连串的取消引用是无效的。” Maurizio Cimadamore “…请找到随附的基于ASM的补丁。 它只是一个PoC因此它不能提供与RFE / JEP中讨论的消息一样细的消息但是可以进行增强以涵盖自定义调试属性……” 主题中还有许多其他帖子上面的帖子是讨论的示例。 具有与NPE相关的更好的“默认”信息将是一个受欢迎的补充。 JDK-8218628当前与JDK 13相关联但是由于现在存在JDK-8220715 因此可能不确定与JDK 13相关联。为此已编写了JEP草案 。 翻译自: https://www.javacodegeeks.com/2019/03/nullpointerexception-messages-coming-java.html
http://www.zqtcl.cn/news/962944/

相关文章:

  • 佛山网页制作设计东莞seo推广机构帖子
  • 公司网站开发费用如何入账网站开发与设计实训总结两千字
  • 生物网站模板在线crm厂商
  • 在线制作动画网站ps切图做网站
  • 西安企业网站建设公司虚拟主机可以做视频网站嘛
  • 做淘客网站用什么程序今天杭州新闻最新消息
  • 东莞专业建网站网站制作方案相信乐云seo
  • 网站分页符素材怎么解决
  • 行远金华网站建设公司合肥公司做网站
  • 餐厅类网站模板中国电建市政建设集团有限公司网站
  • 格力网站建设首页六盘水遵义网站建设怎么做
  • 建设工程企业资质工作网站创建网站怎么赚钱的
  • 三水网站建设流感吃什么药最好
  • 洛阳市住房和城乡建设局网站怎么查询企业注册信息
  • 商业摄影网站源码wordpress文章作者
  • 昆明企业网站模板建站漳浦建设局网站更新
  • 企业网站建设策划书微信开发者工具是干嘛的
  • 泵 品牌网站建设WordPress头像不能本地化
  • vue快速建站网站开发法律
  • 家居行业网站开发百度竞价推广账户
  • 粉色大气妇科医院网站源码百度网址大全网址
  • wordpress 留言墙插件优化网站搭建
  • 优秀设计师网站芯片设计公司
  • 铜陵网站建设公司wordpress密码访问插件
  • 一个公司做2个产品网站怎么做的wordpress网站怎么百度的到
  • 邓州做网站做网站seo怎么赚钱
  • 微信小程序开发步骤图长沙百度seo
  • 网站代做仿百度图片网页设计
  • 广州建设局网站首页网络营销专业的就业方向
  • wordpress单页seo关键词优化培训