程序开发中的各种报错并不能归为BUG,至少它们比BUG还要低一个等级。因为这个阶段你还没有写出真实可用的程序,开发又进行不下去了,着实郁闷。最近在帮人解决报错时突然悟道:报错,其实就是七个字——"少了,多了,对不上"。控制台输出的报错日志99%的报错都是这三个原因造成的。
"少了",顾名思义就是程序找不到需要的资源了。著名的"java.lang.ClassNotFoundException"就是这一派的代表人物。原始的包管理中,一堆的jar包堆在lib目录里。少了一个两个,通常能够让你收到一打的"ClassNotFoundException"了。和jar包们朝夕相处久了,他们少了哪一个,瞄一眼就补上了。当初个个跟天外来客一样还有版本匹配什么的。能集成一套让程序跑起来,恨不得把他们珍藏起来。报404、No Mapping之类的都去查他们的来源是不是因各种原因少了或是根本没有配。总之,程序跟你抱怨找不到东西了。不要发脾气,耐心地帮他一起找吧。
"多了",和前面正好相反,不过他不会说找不到东西了。他可能会抱怨"could not be resolved"或是其他婉约的表达。所以你看到程序开始胡说八道了,但又没少东西。找找"Root cause of "附近的类所属的资源。加了相同的jar包,配多了资源,写多了忘了注释。反正东西多了程序不知道该用哪个,还不知怎么说,就开始胡说了。
"对不上",其实是前面两个的综合体。多了不该要的,少了该要的。这种报错有时候报的很明显。Oracle的数据库用了MySQL的数据驱动包,拼写XML报文头尾没合上等等。这些一眼就能看出来了。怕的就是一些相似的资源搞混了,还没有报错。比如结构相同的内网数据库配反了。程序启动不会报异常,但很快会发现数据对不上之类。这类错误比较难排查。不过只要熟记"七字口诀",逐项排除,报错还是很容易排除的。
原文:http://blog.csdn.net/coding_my_future/article/details/40799679