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. python 输出六行星号✳

    for i in range(1,6): for j in range(5-i): print(" ",end=" ") for j in range(1,2* ...

  2. 12.swoole学习笔记--锁机制

    <?php //创建锁对象 $lock=new swoole_lock(SWOOLE_MUTEX);//互斥锁 echo "创建互斥锁\n"; //开始锁定 主进程 $loc ...

  3. 第二阶段scrum-5

    1.整个团队的任务量: 2.任务看板: 会议照片: 产品状态: 注册登陆界面功能正在实装,前端制作完成 数据库配置中

  4. Bean XML 配置(4)- 自动装配

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

  5. Web基础之Redis

    Redis 什么是Redis?Redis是一个基于内存的非关系型数据库,简单来说就是一个可持久化的高速缓存. 常用场景: 缓存(数据查询,端链接,新闻内容,商品内容等等)--使用最多 聊天室的在线好友 ...

  6. 编程入门-Java开发工具介绍及Eclipse安装

    编程入门-Java开发工具介绍及Eclipse安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Java开发工具介绍 "源代码"一般是文字,所以可以使用记 ...

  7. MFC 根据字符宽度居中

    Gdiplus::Font font(_T("微软雅黑"), (Gdiplus::REAL)130); Gdiplus::RectF orgin(0.0f, 100.0f, nWi ...

  8. CMenu类中禁用/变灰某一项

    CMenu::EnableMenuItem   启用. 禁用,或变暗的菜单项.   UINT EnableMenuItem( UINT nIDEnableItem, UINT nEnable); 参数 ...

  9. BGP(IBGP“内部路由器”和EBGP“外部路由器”)命令解析

    BGP:基于策略的路径向量路由协议. ①:(attribute)属性描述路径. ②:使用TCP(端口179)作为传输协议——(IBGP多使用loopback端口建立update-source) IBG ...

  10. bugku-杂项 convert

    打开题目文件,一大堆01码,用py转换成hex f=open("in.txt","r") print hex(int(str(f.read()),2)) f.c ...