1.      前提

第一层:遇到异常首先必须告诉自己,冷静,不要慌。(一看到Bug就心慌,那么就不能释放必杀技)

2.      入门级

第二层:遇到Bug,第一潜意识看输出异常的信息的(控制台输出,Junit输出,页面输出),优先将异常输出在控制台。

建议:遇到JUnit异常输出,最好转成控制台输出。

如:一下异常如果在Junit查看,不好发现为,只知道是数据库出错了。转成为控制台异常立刻就看到是缺少了一个字段。

 

控制台的异常更加直观

 

第三层:查看异常的第一个关注点:异常的名字,通过异常名字大概可以给异常分类。

如:根据这个异常的名字就知道,异常出现在数据库操作。

 

第四层:查看异常的第二个关注点:异常的信息,很多异常的信息已经说明了异常的问题(30%)

如:该异常,明眼的同学立刻就知道数据库操作不成功,问题出在配置少了一个字段。

 

3.      应用级

第五层:以上操作不能解决,查看异常的第三个关注点:在异常中寻找是否有自己写的类定位异常出错的位置。

如下图:明显告诉为,是DataSourceTest.java:23,就是该类的23行出错了。可以点进去

 

--点击进去,设置断点

第六层:在该出错的位置System.out.print()输出数据,分析数据(可选,如果会断点跳过该步)

第七层:在该出错的位置,设置调试断点,根据单步调试,分析断点输出的数据。使用watch操作获得重点关注的数据。(80%)

注意:该步骤,包括在浏览器调试js代码的流程。

重点:

(1)找的异常的代码位置(通过在异常信息里面找到自己的报错位置!!)

(2)理解异常和数据的关系(难点)

4.      高手级

第八层:有些问题,出错是无法设置断点的,启动程序就出错了。而且这种问题,经常这种异常就没有自己写的类,断点调试的功力就被废了。遇到这种问题,第一意识要想到,这些问题不是Java代码的出错,出现这种问题的原因:开发环境出错,JSP页面出错,配置文件、配置类出错

(1)如何判断是开发环境出错:看看项目有没有错误警告。

 

(2)如何判断是否是页面出错:查看页面异常信息和控制台

通常页面出错,异常会告诉你,哪个页面出错。这是很重要的信息。

接着的问题只能根据信息提示解决了

 

(3)如何判断是配置文件出错:查看控制台信息,有时控制台找不到想要的。可以通过设置入口断点的方式。

如:在配置struts.xml配置是否出错,在Action的方法入口处设置一个断点。如果都没有执行代码逻辑就出错了,那么可以判断,就是web.xml获得strust.xml配置错了,不可能是代码出错。

注意:

分析配置文件异常时:

如果网站连启动都启动不了的,重点关注web.xml

如果网站可以启动的关注非web.xml的配置文件 (90%

5.      骨灰级

第九层:隔离法(99%)

在作为以上所有操作,都无法找到异常的原因,可以使用隔离法。可以分为代码隔离和业务隔离。

(1)代码隔离法

同一个程序中,根据异常的范围,停止与异常无关的代码模块的执行,并且在代码执行的流程的各处设置辅助断点跟踪。

做demo。对原理不太熟悉的代码。!!!!

(2)业务隔离法

分布式开发中,一个系统有多个子系统组成。往往一个业务的实现要调用N个子系统的接口。经常会出现,开发时功能是好的。上线时就出错问题。遇到这种问题,在前八层的功力都无法分析时,那么就要将各个业务系统隔离分析了。

代码隔离经常用于

(1)没有输出有效异常信息的异常。

(2)出现的异常不是固定的,有时可以有时不可以。

6.      神级

第十层:根据多年积累的经验。使用直觉,可以立刻定位绝大大部分问题,不需要任何招数。在直接判断不了再使用以上的方法拆招。

bugs开发异常解决方法的更多相关文章

  1. Android 异常解决方法【汇总】

    (1)异常:Android中引入第三方Jar包的方法(Java.lang.NoClassDefFoundError解决办法) 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方 ...

  2. .NET MVC Json()处理大数据异常解决方法

    [1-部分原文]: .NET MVC Json()处理大数据异常解决方法 整个项目采用微软的ASP.NET MVC3进行开发,前端显示采用EasyUI框架,图表的显示用的是Highcharts,主要进 ...

  3. win10系统桌面快捷键图标异常解决方法

    win10系统桌面快捷键图标异常解决方法 前言: 有一次我的一个图标变成白色,找到:https://jingyan.baidu.com/article/948f5924148e67d80ef5f947 ...

  4. SVN Attempted to lock an already-locked dir异常解决方法

    Attempted to lock an already-locked dir异常解决方法 eclipse或myeclipse用svn提交的时候报错: Attempted to lock an alr ...

  5. 安装visual studio2017后 首次启动出现ActivityLog.xml异常解决方法

    安装visual studio2017后 首次启动出现ActivityLog.xml异常解决方法 ps:操作系统是win10 在官网下载了vs2017社区版按照教程(教程链接在文末)安装完成之后,首次 ...

  6. Tomcat部署java项目java.lang.OutOfMemoryError异常解决方法

    java.lang.OutOfMemoryError异常解决方法 Window系统环境下,在catalina.bat文件第一行添加以下内容 set JAVA_OPTS=-Xms512m -Xmx512 ...

  7. springboot springmvc 抛出全局异常解决方法

    springboot中抛出异常,springboot自带的是springmvc框架,这个就不多说了. springmvc统一异常解决方法这里要说明的是.只是结合了springboot的使用而已.直接上 ...

  8. 因修改/etc/ssh权限导致的ssh不能连接异常解决方法

    因修改/etc/ssh权限导致的ssh不能连接异常解决方法 现象: $ssh XXX@192.168.5.21 出现以下问题 Read from socket failed: Connection r ...

  9. IE CSS Bugs 列表和解决方法

    我们在开发中我们常会在IE中遇到很多莫名的bug,尤其是老态龙钟的IE6浏览器.为了提高我们的开发效率,需要经常总结,整理工作中遇到的问题.我们在网络上找到的IE Bugs 资料是零散的.不过,在老外 ...

随机推荐

  1. 十九、SAP查询所有数据库表的所有数据

    一.我们打款SAP自带的一个演示数据库SCARR 二.表结构如下 三.代码如下 四.执行结果如下 我们对比一下数据库的内容,很perfect 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微 ...

  2. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-map-marker

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  3. Spring-ResolvableType可解决的数据类型

    ResolvableType,可解决的数据类型.它为java语言中的所有类型提供了相同的数据结构,其内部封装了一个java.lang.reflect.Type类型的对象. 在讲解这个数据结构之前,首先 ...

  4. js面试之数组的几个不low操作

    1.扁平化n维数组 1.终极篇 [1,[2,3]].flat(2) //[1, 2, 3] [1,[2,3,[4,5]]].flat(3) //[1, 2, 3, 4, 5] [1,[2,3,[4,5 ...

  5. super方法

    继承 __init__是python中的构造函数,用于属性的初始化. 如果在子类中定义了构造函数,python默认不会调用父类的构造函数,父类里的属性就不会集成到子类. super 用于调用父类(超类 ...

  6. vim使用技巧(常用指令)

    1. vim基础操作 vim是从 vi 发展出来的一个文本编辑器 .代码补完.编译及错误跳转等做了一些增强 1.1 进入编辑模式 命令 含义 i和I i在光标前插入,I在行首插入. a和A a在光标后 ...

  7. Banner信息收集和美杜莎使用(9.26 第十二天)

    Banner信息收集 Banner信息,欢迎语,在banner信息中可以得到软件开发商.软件名称.版本.服务类型等信息,通过这些信息可以使用某些工具直接去使用相对应的exp去攻击 前提条件:需要和目标 ...

  8. MyBatis整体架构

    Mybatis整体架构 基础支持层 反射模块 Java中的反射很强大,但是还是需要封装的.MyBatis专门提供了反射模块,对元素的反射进行了封装,提供了简洁的API,对反射进行了优化,例如缓存了类的 ...

  9. 登录之后跳转到登录之前的页面 之 Referer 的坑

    简而言之:通过鼠标在页面上点击链接发送请求,请求header中会包含referer信息, 通过在浏览器地址栏书写并发送请求的,header中不会有referer信息. 为了完成登录动作成功后返回原页面 ...

  10. LIS(最长上升子序列)的 DP 与 (贪心+二分) 两种解法

    正好训练赛来了一道最长递减序列问题,所以好好研究了一下最长递增序列问题. B - Testing the CATCHER Time Limit:1000MS     Memory Limit:3000 ...