Pareto记录原理:97%的记录错误语句是由3%的唯一错误引起的

在最新的数据整理帖子之后,我们收到了很多反馈和问题,在该文章中,我们显示97%的记录错误是由10个唯一错误引起的 。 根据普遍的需求,我们将更深入地研究此研究中包含的1,000多个应用程序中的顶级异常类型。

来吧。

(顺便说一下,这是我们的第一篇推荐配乐, 请检查一下自己 )

无须再做:按类型划分的顶级异常

为了提取数据,我们从Takipi的错误分析微代理监视的1000多个应用程序中提取了匿名统计信息,并检查了每个公司的十大例外类型。 然后,我们将所有数据合并,得出总体前十名的列表。

每个生产环境都不同,研发团队使用不同的第三方库,并且拥有自己的自定义例外类型。 从更大的角度看,标准异常脱颖而出,并且一些有趣的模式变得可见。

真数据

1. NullPointerException – 70%的生产环境

是。 臭名昭著的NullPointerException位于#1。 Null Reference的发明者Charles Antony Richard Hoare爵士说的没错:

“我称之为我十亿美元的错误。 这是在1965年发明空引用的结果。它导致了无数的错误,漏洞和系统崩溃,在最近40年中可能造成十亿美元的痛苦和破坏。

在我们研究的70%的生产环境中,NPE排在前十位,位居第一。 在Takipi ,我们实际上有一个特殊的警报,每当在系统上引入新的NullPointerException时,我们都可以通过它来知道自己的设置 。

塔基皮NPE怪物

2. NumberFormatException – 55%的生产环境

在#2中是NumberFormatException,它在您尝试将字符串转换为数字值且String格式不正确时发生。 它扩展了IllegalArgumentException,该异常也在这里#3出现。

一种简单的修复方法是确保传递给parse方法的输入传递以下正则表达式:

  1. 对于整数值:“-?\\ d +”
  2. 对于浮点值:“-?\\ d +。\\ d +”

3. IllegalArgumentException – 50%的生产环境

紧随其后的是IllegalArgumentException,排在第3位,在本次调查的50%生产环境中排名前10位。

IllegalArgumentException实际上使您免于麻烦,并在将参数从意外类型传递给方法时抛出该异常。 例如,某些方法期望使用类型X,而您使用类型Y作为参数来调用它。 同样,这是由于未检查您作为其他方法的输入发送的错误而导致的错误。

IllegalArgumentException塔基皮怪兽

4. RuntimeException – 23%的生产环境

前十个列表中的所有异常对象(除Exception外)均未选中,并扩展了RuntimeException。 但是,在#4处,我们面临着“纯” RuntimeException,在Java中,该语言实际上并未抛出任何异常。 那么这是怎么回事?

有两种主要用例可从您的代码中显式引发RuntimeException:

  1. 引发新的“通用”未经检查的异常
  2. 重新抛出:
    • 围绕扩展RuntimeException的另一个异常“包装”一个常规的未经检查的异常
    • 取消检查异常

关于已检查与未检查以及我们在此描述的最后一个用例的著名故事来自亚马逊的AWS开发工具包,该工具仅抛出未检查的异常并拒绝使用已检查的异常。

Takipi RuntimeExceptionMonster

5. IllegalStateException – 22%的生产环境

在第5名中,IllegalStateException是本帖所涵盖的1,000多个应用程序中的22%中排名前10位的例外。

当您尝试在不适当的时间使用方法时,会引发IllegalStateException,例如…在《 我如何与母亲见面》的第一集中与Ted和Robin的场景。

一个更现实的Java示例是,如果您使用URLConnection,尝试做一些假设您未连接的操作,并得到“ IllegalStateException:已连接”。

6. NoSuchMethodException –生产环境的16%

这样的方法,很混乱 。 在此数据紧缩中,有16%的生产环境在其前10名中具有NoSuchMethodException。

由于我们大多数人在喝醉的时候不会写代码,至少在白天没有这么做,这并不一定意味着我们会以为自己看到的东西不那么疯狂。 这样一来,编译器就可以在过程的较早阶段捕获这种方式。

当您尝试使用不存在的方法时,会引发此异常,当您使用反射并从某个变量获取方法名称,或者针对某个类的版本进行构建并使用在生产中使用另一种(感谢@braxuss )。

7. ClassCastException – 15%的生产环境

当我们试图将一个类强制转换为另一个非实例的类时,就会发生ClassCastException。 15%的生产环境将其排在前10位,这很麻烦。

规则是,不能将对象强制转换为不继承对象的其他类。 大自然曾经做过一次,当时没人在看,这就是我们得到…… Java鼠标鹿的方式 。 是的,那是一个真实的生物。

8.例外–生产环境的15%

在#8中,所有例外项的母亲Exception, DUN DUN DUUUUN (祖母可投掷 )。

Java从不抛出简单的异常,因此这是RuntimeException之类的另一种情况,它必须是……您或第三方代码显式地抛出它,原因是:

  1. 您需要一个异常,并且懒得指定它的实际含义。
  2. 或者…更具体地说,由于某种原因,您需要抛出一个检查异常

9. ParseException – 13%的生产环境

解析错误再次发出! 每当我们传递字符串以将其解析为其他内容,并且未按照应有的格式对其进行格式化时,就会被ParseException击中。 笨蛋

在这篇文章中测试的13%的生产环境中,前十名中都包含此异常,这比您想象的要普遍。

解决的方法是……再次检查自己。

10. InvocationTargetException – 13%的生产环境

Java Reflection领域抛出的另一个异常是InvocationTargetException。 实际上,这是一个包装,如果在调用的方法中出现问题,则将该异常包装到InvocationTargetException中。

要获取原始异常,您必须使用getTargetException方法。

我们看到这篇文章中测试的13%的生产环境将其列入前十大例外列表中。 这里的第二种异常类型与Java的反射功能直接相关。

最后的想法

Java异常的世界确实丰富多彩,令人惊讶的是,前十大异常对我们的日志有多大影响。 所有记录的错误中有97%来自10个唯一异常。

尝试Takipi ,找出您自己的生产环境中最常见的10个例外,开始只需几分钟,您还可以获得修复它们所需的所有数据。 源,堆栈,状态。

翻译自: https://www.javacodegeeks.com/2016/06/top-10-exception-types-production-java-applications-based-1b-events.html

生产Java应用程序中的十大异常类型-基于1B事件相关推荐

  1. java中什么时候应用异常_生产Java应用程序中的十大异常类型-基于1B事件

    java中什么时候应用异常 Pareto记录原理:97%的记录错误语句是由3%的唯一错误引起的 在最新的数据整理帖子之后,我们收到了很多反馈和问题,我们发现97%的记录错误是由10个唯一错误引起的 . ...

  2. Java小程序之球球大作战(基于Java线程实现)

    Java小程序之球球大作战(基于Java线程实现) 一.游戏基本功能: 1.自己的小球可以随着鼠标的移动而改变坐标: 2.敌方小球不断的在界面中移动 3.当检测到敌方小球相互碰撞时,小球会弹开 4.当 ...

  3. 从Java应用程序中消除Null指针异常

    这篇文章简要介绍了Java 8的最有用但"毫不费力"的功能. 程序员花了无尽的时间来尝试纠正最常见但最危险的错误之一-空指针异常. 空指针异常可能导致我们的应用程序意外中断,并且很 ...

  4. 凉哥核心圈程序员必备十大图书推荐(一)

    写在前面 凉哥核心圈程序员必备十大图书推荐(一),各位伙伴应该一目了然了哈,没错凉哥准备出一系列图书推荐的文章,其实很多朋友在私下问凉哥除了大学的课程外自己要不要读一些技术类的书籍呢,答案当时要的,但 ...

  5. 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南

    如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...

  6. elastic search java_在 Java 应用程序中使用 Elasticsearch

    如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...

  7. Java应用程序中的内存泄漏和内存管理

    Java平台最突出的功能之一是其自动内存管理. 许多人错误地将此功能转换为Java中没有内存泄漏 . 但是,事实并非如此,我给人的印象是,现代Java框架和基于Java的平台,尤其是Android平台 ...

  8. 学完Java后可从事的十大领域!

    Java是时下非常流行的语言,这意味着有很多很多不同的工作可供选择.Java软件工程师入行1-3年,年薪已达到10-15万,而且在IT行业工作经验越多,薪资待遇越高. 工作选择多,薪资待遇好,成了许多 ...

  9. 改变程序员的十大电影与科普视频

    改变程序员的十大电影与科普视频 大家好,我是迪巴哥,是一个每天都在改bug的java码农,今天我给大家推荐程序员必看的十大电影以及一些有趣实用的计算机科普视频,保证干货满满,听说先赞后看的人都升职加薪 ...

最新文章

  1. 清华男女图鉴 | 有电车会拍照,我在清华还是找不到女朋友
  2. 2013年4月27日星期六
  3. 1:tcl-8.5.13-8.el7.x86_64: [Errno 256] No more mirrors to try.
  4. 清官谈mysql中utf8和utf8mb4区别,请使用utf8mb4
  5. Glide 这样用,更省内存!!!
  6. android theme 使用方法,Android入门之Style与Theme用法实例解析
  7. 拒绝双写:巧用Lindorm数据订阅
  8. linux还原系统_怎么成为一名合格的Linux运维工程师
  9. 电表的改装与校准大学物理实验报告_电学实验 一 : 电表的改装、使用与读数...
  10. postman替换快捷键ctrl加什么_你会用 Ctrl + ~ 键吗?
  11. 公众号搜题怎么实现的?
  12. snappy格式解析
  13. 怎么样禁止鼠标和键盘唤醒win7系统睡眠模式转载
  14. PHPCMS网站登陆增加点触验证码
  15. mysql手机号以135开头_135开头的手机号属于联通还是移动?
  16. ArcGIS中的 Map 对象
  17. HTML插件程序,10个最棒的jQuery和HTML所见即所得编辑器插件
  18. 如何在AndroidStudio中使用GitHub
  19. 信息系统安全实验——Week 8
  20. 【SequoiaDB巨杉数据库】Oma-stopAllNodes

热门文章

  1. Junit5新功能一览
  2. 《走遍中国》珍藏版(四)
  3. 最全三大框架整合(使用映射)——IDeptService.java
  4. 计算机三级网络技术题库第15套,第15套 上机操作题
  5. 什么是无监督学习(监督学习,半监督学习,无监督聚类)?
  6. jvm(2)-java内存区域
  7. 实模式切换到保护模式,为什么要开启A20地址线(系统升级产生的兼容性问题)
  8. java查找链表中间元素_如何通过Java单次查找链表的中间元素
  9. jaxb注解使用_使用JAXB时
  10. 用jackson转json_用Jackson编写大JSON文件