JAVA开发异常处理十大秘诀
1.前提
第一层:遇到异常首先必须告诉自己,冷静,不要慌。(一看到Bug就心慌,那么武功就施展不了了)
2.入门级
第二层:遇到Bug,第一潜意识看输出异常的信息的(控制台输出,Junit输出,页面输出),优先将异常输出在控制台。
建议:遇到JUnit异常输出,最好转成控制台输出。(对测试方法的代码try catch )
如:一下异常如果在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.神级
第十层:根据多年积累的经验。使用直觉,可以立刻定位绝大大部分问题,不需要任何招数。在直接判断不了再使用以上的方法拆招。
JAVA开发异常处理十大秘诀的更多相关文章
- Java9发布回顾Java 8的十大新特性
java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...
- 使用Visual Studio进行 Android开发的十大理由
[原文发表地址]Top 10 reasons to use Visual Studio for C++ Android Development! Visual Studio: C++跨平台的移动解决方 ...
- 总结JAVA语言的十大特性
JAVA语言的十大特性 1.简单 Java语言的语法简单明了,容易掌握从,而且Java语言是纯面向对象的语言. Java语言的语法规则和C++类似,从某种意义上来讲,Java原因是由C语言和C++语言 ...
- 新版.Net开发必备十大工具(转)
Snippet Compiler Snippet Compiler是一个基于 Windows 的小型应用程序,你可以通过它来编写.编译和运行代码.如果你具有较小的代码段,并且你不想创建完整的 Visu ...
- Java数组的十大方法
Java数组的十大方法 以下是Java Array的前10种方法.他们是来自stackoverflow的投票最多的问题. 0.声明一个数组 String[] aArray = new String[5 ...
- Java基础学习总结(56)——学java必知十大学习目标
诞生至今已有20年的Java,现在依然有很多人使用.回顾过去十五年的成果,Java一直是数一数二的.Java已经成为世界范围内应用最为广泛的编程语言之一.那么在学java的时候你知道到底要学什么吗?一 ...
- Java开发想尝试大数据和数据挖掘,如何规划学习?
大数据火了几年了,但是今年好像进入了全民大数据时代,本着对科学的钻(zhun)研(bei)精(tiao)神(cao),我在17年年初开始自学大数据,后经过系统全面学习,于这个月跳槽到现任公司. 现在已 ...
- Java开发学习(十六)----AOP切入点表达式及五种通知类型解析
一.AOP切入点表达式 对于AOP中切入点表达式,总共有三个大的方面,分别是语法格式.通配符和书写技巧. 1.1 语法格式 首先我们先要明确两个概念: 切入点:要进行增强的方法 切入点表达式:要进行增 ...
- Java开发者必备十大学习网站
作为开发者来说,必备的除了对编码的热情还要有自己的一套技巧,另外不可缺少的就是平时学习的网站.以下本人收集的Java开发者必备的网站,这些网站可以提供信息,以及一些很棒的讲座, 还能解答一般问题.面试 ...
随机推荐
- DELPHI之关于String的内存分配(引)
在函数.过程或者方法中定义一个字符串变量时,由于我们知道在函数.过程或者方法中定义的变量为局部变量,它的内存 是在栈中分配的,但是这里有个小细节我们要注意,对于一个局部的字符串变量,它的大小为4字节, ...
- jQuery.media.js的使用方法
该插件可以播放多种类型的多媒体文件包括:Flash, Quicktime, Windows Media Player, Real Player, MP3, Silverlight, PDF等,前提 ...
- IT++数学、信号、通讯类库,Blitz++数学,Armadillo 线性代数,Dlib网络,线程,图形,数学,图像,数据挖掘/机器学习,XML等等
https://en.wikipedia.org/wiki/Blitz%2B%2B https://en.wikipedia.org/wiki/IT%2B%2B https://en.wikipedi ...
- CMake编译Qt程序+UI+Resources
今天给大家讲解一下Cmake如何编译Qt程序. 这里说的Qt程序不只是用QtCreator写出来的程序,当然也可以是文本编辑器….这里说的Qt程序是指,QCoreApplication,QApplic ...
- TextBox的Enable和ReadOnly属性的限制
在以前的ASP.NET 1.x版本中,设置为ReadOnly的TextBox控件在客户端更改了值后,在服务器端仍然可以得到修改后的值,但在ASP.NET 2.0中,这种做法已经限制.这是为了提高应用程 ...
- 深入理解Java G1垃圾收集器
本文首先简单介绍了垃圾收集的常见方式,然后再分析了G1收集器的收集原理,相比其他垃圾收集器的优势,最后给出了一些调优实践. 一,什么是垃圾回收 首先,在了解G1之前,我们需要清楚的知道,垃圾回收是什么 ...
- Django预备知识
http协议 url: 协议://域名(IP)+端口(80)/路径?参数(a=1&b=2) 示例:https://www.baidu.com/s/?wd=aaa MVC M:mdoel 与数据 ...
- SYN011型 B码时统
SYN011型 B码时统 产品概述 SYN011型B码时统是由西安同步电子科技有限公司精心设计.自行研发生产的一款专用时统设备,从GPS/北斗卫星上/和外部输入的IRIG-B码获取标准时钟信号信 ...
- vue.js异步上传文件前后端代码
上传文件前端代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&q ...
- 基于STM32F429和Cube的主从定时器多通道输出固定个数的PWM波形
主从定时器的原理已在上篇博文: 基于STM32F429+HAL库编写的定时器主从门控模式级联输出固定个数PWM脉冲的程序 讲解了,这篇重点就讲如何实现多通道的PWM级联输出. 1.软件环境 Keil5 ...