日期:2014-05-20  浏览次数:20742 次

请教一个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++){ 
就可以了;
------解决方案--------------------
引用:
像这种异常(程序代码错误引起的),需要修改你的代码了,而不是捕获异常了;
你可以这样修改:
把  for(int i =1;i<7;i++){ 
改为:
for(int i =1;i< UserNumchar.length;i++){ 
就可以了;

当然,你可以根据你的实际情况来初始化
char[] myUserDataInfo = new char[UserNumchar.length];