日期:2014-05-17  浏览次数:20797 次

诡异:代码执行到哪去了?
一个项目XP上运行正常,移到一台win7上却出现问题,经排查最终确定了问题范围,但出现的现像却让我无法理解:


static void check(String name,String key) throws EasyWebException
{
Element el = null;
try {
System.out.println("-------------start");
el = (Element)XPath.selectSingleNode(root, "client[@name='" + name + "']");
System.out.println("-------------ok");
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("==============="+e.getMessage());
//e.printStackTrace();
}
if(el == null){
throw new EasyWebException(100100,"Client:check 名称不存在");
}
else{
String md5 = el.getAttributeValue("key");
String t = Safety.encryptToMD5(key);
if(!md5.equals(t)){
throw new EasyWebException(100101,"Client:check 密码不正确");
}
}
}


请看,如果start字符串在tomcat黑色窗口中出现的话,那么应该要么是OK出现,要么是异常信息出现,可现在情况是,start显示出来了,但OK没出现,异常信息也没出现,程序就这样莫名其妙“不见了”,难道是CPU停了?开玩笑。请问是怎么回事啊?
------最佳解决方案--------------------
你这个方法写了throws,异常由throws抛出了,并没有执行到try{}catch里面。
------其他解决方案--------------------
说不清楚是什么问题,你加个finally,看看代码能不能进入finally,确认代码是否停留在了这一行代码上:
el = (Element)XPath.selectSingleNode(root, "client[@name='" + name + "']");
------其他解决方案--------------------
debug调试下, 个人认为不会出现这种错误,可能是程序的某种问题。
------其他解决方案--------------------

el = (Element)XPath.selectSingleNode(root, "client[@name='" + name + "']"); 

这个里面有可能出现了死循环