请教一个Swing Socket编程技术上的程序“UncaughtException”异常的处理方法.
高手,您好:
我写了一个Swing的Java通信程序,其中有一个代码结构,我采用在一个端点进行:
“Switch语句拿到while循环语句接收到的通信对面端点发来的报文”,并且进行“根据split语句分派的协议字段进行一个case分支子线程的创建运行”,“完成用户的通信节点所需要的功能的数据计算”的代码结构的书写.
在我对这个结构中的某一个功能进行调试的时候,每次代码走到这里的位置:
char[] UserNumchar = MyUserUserInfo.toCharArray();
int[] myUserInfo = new int[18];
for(int i =0;i<4;i++){
myUserRole0Numch[i]=UserNumchar[i+8];
myUserRole1Numch[i]=UserNumchar[i+11];
}
System.out.println("line_on176");
for(int i =1;i<7;i++){
myUserDataInfo[i]=UserNumchar[i];
}
for(int i = 0;i<18;i++){
myUserInfo[i]=UserNumchar[i];
}
第9行的逻辑处,就报出“UncaughtException”的异常.
上面这段代码是在一个Thread类型的子类中进行书写的.
是众多位于case分支的代码逻辑中的“接单子线程”中的一个功能实现类.
希望高手能够赐教:
我的错误,怎么修改?
并且,希望高手能够对我的提问进行“具体化到代码”的“理论分析”和“代码样例的实际指导”.
谢谢高手!!
------解决方案--------------------检查一下 UserNumchar 这个数组,到 UserNumchar[6] 的时候就越界了。你看一下这个数组的长度够不够7
------解决方案--------------------超过你数组的长度了
------解决方案--------------------用数组.length计算长度,不是写死为7
------解决方案--------------------数组下标越界。。。
------解决方案--------------------像这种异常(程序代码错误引起的),需要修改你的代码了,而不是捕获异常了;
你可以这样修改:
把 for(int i =1;i<7;i++){
改为:
for(int i =1;i< UserNumchar.length;i++){
就可以了;
------解决方案--------------------
当然,你可以根据你的实际情况来初始化
char[] myUserDataInfo = new char[UserNumchar.length];