明天彩铃业务升级,今天是要和BOSS联调(BOSS是亚信的记费系统,据说国内做的最好的一家)。一个涉及到计费模块需求,从我公司网站发起的彩铃注册用户计费要到BOSS,和BOSS交互的协议使用的是FTP协议,使用话单接口机进行同步数据;
将程序代码提前两天搞定,进行了内部的模拟测试!让一个兄弟也帮忙测试了一把,其实我的测试很简单,测试用例自己定义,想到的就测试,没有想到上线更正(当然很不负责任的,没有办法,人力不够啊);进行了简单的内部测试,感觉万事大吉了!可没有想到,也就是今天要和BOSS进行了联调,却发现了一个严重的BUG,BOSS处理完注册用户的数据,返回的话单结果要与我们系统同步,我们的系统虽然通过FTP将话单结果取到本机上,可怎么也处理不了话单!处理话单我设计的程序是通过一个任务类定时扫描从FTP取到数据,可任务类仅仅是在系统启动时运行了一次,而后都没有去运行!我当时在想可能是由于我使用了内部类,因为我对内部类不是很熟悉,这次是尝新鲜,可是内部测试既然没有问题,我跟踪了代码,问题不在这里!通过日志我发现我犯了一个极大的错误,当时的代码是这样的:
BufferReader mybr = null;
File file = null;
for(int i=0;i<filelist.size();i++){
file = file.get(i);
..............
........
}
try{
mybr.close();
}
catch(IOExceptoin io){
LogManager.log("read data ioexcepton");
e.printStrack();
}
filelist 是目录下所有的文件列表,我想各位已经看出让过filelist没有文件,这个程序要抛出空指针异常,因为我本身只是将mybr定义了一个句柄对象,而本身没有实例话,在当filelist没有文件,直接执行mybr.close();空指针是肯定的,这少了一句判断的代码,差点惊动整个公司的领导,因为明天正式割接上线,而现在程序还在调试中,直接领导对我大发脾气!郁闷中,草草记录今天的心情
思维严谨,代码规范!与路过人共勉