bugs开发异常解决方法
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开发异常解决方法的更多相关文章
- Android 异常解决方法【汇总】
(1)异常:Android中引入第三方Jar包的方法(Java.lang.NoClassDefFoundError解决办法) 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方 ...
- .NET MVC Json()处理大数据异常解决方法
[1-部分原文]: .NET MVC Json()处理大数据异常解决方法 整个项目采用微软的ASP.NET MVC3进行开发,前端显示采用EasyUI框架,图表的显示用的是Highcharts,主要进 ...
- win10系统桌面快捷键图标异常解决方法
win10系统桌面快捷键图标异常解决方法 前言: 有一次我的一个图标变成白色,找到:https://jingyan.baidu.com/article/948f5924148e67d80ef5f947 ...
- SVN Attempted to lock an already-locked dir异常解决方法
Attempted to lock an already-locked dir异常解决方法 eclipse或myeclipse用svn提交的时候报错: Attempted to lock an alr ...
- 安装visual studio2017后 首次启动出现ActivityLog.xml异常解决方法
安装visual studio2017后 首次启动出现ActivityLog.xml异常解决方法 ps:操作系统是win10 在官网下载了vs2017社区版按照教程(教程链接在文末)安装完成之后,首次 ...
- Tomcat部署java项目java.lang.OutOfMemoryError异常解决方法
java.lang.OutOfMemoryError异常解决方法 Window系统环境下,在catalina.bat文件第一行添加以下内容 set JAVA_OPTS=-Xms512m -Xmx512 ...
- springboot springmvc 抛出全局异常解决方法
springboot中抛出异常,springboot自带的是springmvc框架,这个就不多说了. springmvc统一异常解决方法这里要说明的是.只是结合了springboot的使用而已.直接上 ...
- 因修改/etc/ssh权限导致的ssh不能连接异常解决方法
因修改/etc/ssh权限导致的ssh不能连接异常解决方法 现象: $ssh XXX@192.168.5.21 出现以下问题 Read from socket failed: Connection r ...
- IE CSS Bugs 列表和解决方法
我们在开发中我们常会在IE中遇到很多莫名的bug,尤其是老态龙钟的IE6浏览器.为了提高我们的开发效率,需要经常总结,整理工作中遇到的问题.我们在网络上找到的IE Bugs 资料是零散的.不过,在老外 ...
随机推荐
- net GC 学习以及问题
引用对象必要空间开销:对象指针.同步块索引 GC重要点: 每个应用程序包含一组根,每个根都是一个存储位置,其中包含指向引用类型对象的一个指针,该指针要么指向托管堆中的要给对象,要么为null.(这句话 ...
- 浅谈Python 中 __getattr__与__getattribute__的区别
__getattr__与__getattribute__均是一般实例属性截取函数(generic instance attribute interception method),其中,__getatt ...
- 日期月份是英文转成数字——oracle
update table01 set F_DATE = to_char(to_date(F_DATE, 'dd-month-yy', 'NLS_DATE_LANGUAGE=AMERICAN'), 'y ...
- mysql 手动把字段设置为null
在根据经纬度计算距离的时候,发现有的视频点距离我当前位置的距离计算出来的为0,有的距离计算出来是几千公里,仔细看下数据库,发现了问题所在 计算出来几千公里的视屏点的经纬度是空不是null,然后我们手动 ...
- jar类库加载顺序
当我们启动一个tomcat的服务的时候,jar包和claess文件加载顺序: 1. $java_home/lib 目录下的java核心api 2. $java_home/lib/ext 目录下的jav ...
- C++ 设置自动启动
WCHAR pFileName[MAX_PATH] = {}; //得到程序自身的全路径 DWORD dwRet = GetModuleFileName(NULL, pFileName, MAX_PA ...
- 通过整合遥感数据和社交媒体数据来进行城市土地利用的分类( Classifying urban land use by integrating remote sensing and social media data)DOI: 10.1080/13658816.2017.1324976 20.0204
Classifying urban land use by integrating remote sensing and social media data Xiaoping Liu, Jialv ...
- 详解contextConfigLocation|Spring启动过程详解(转)
原文链接:https://blog.csdn.net/qw222pzx/article/details/78191670 spring的应用初始化流程一直没有搞明白,刚刚又碰到了相关的问题.决定得好好 ...
- 查看两个集合中有没有相同的元素的方法。Collections disjoint
在做项目的时候遇到一个种情况,就是要比较两个集合中是否有相同的元素,经过查找资料,找到了Collections类下的disjoint方法下面做的一个小例子: import java.util.Coll ...
- C#高级编程(第9版) 第06章 数组
好久没发东西了 , 一停下来就会变懒.... 虽然没完成,也就是它吧 --------------------------------- 以下正文 -------------------------- ...