public void run()
    {
        BufferedInputStream bis;
        BufferedOutputStream bos;
        byte b[];
        JFileChooser fc = new JFileChooser();
        int rt = fc.showSaveDialog(null);
        fc.setFileSelectionMode(1);
        if(rt != 0)
            break MISSING_BLOCK_LABEL_369;/////为什么这里会有这段东西的~?
        filepath = fc.getSelectedFile();
        bis = null;
        bos = null;
        b = new byte[0x20000];
        int num = 0;
        try
        {
            bis = new BufferedInputStream(sReceive.getInputStream());
            bos = new BufferedOutputStream(new FileOutputStream(filepath));
            long receiveData = 0L;
            long preTime = (new Date()).getTime();
            long curTime = preTime;
            long amount = 0L;
            int num;
            while((num = bis.read(b)) != -1) 
            {
                bos.write(b, 0, num);
                receiveData += num;
                amount += num;
                curTime = (new Date()).getTime();
                pb.setValue((int)((receiveData / filelength) * 100L));
                if(curTime - preTime > 500L)
                {
                    lSendRate.setText((new StringBuilder("\u4F20\u8F93\u901F\u7387\u4E3A")).append(getFilelength((amount * 1000L) / (curTime - preTime))).append("/\u79D2").toString());
                    preTime = curTime;
                    amount = 0L;
                }
            }
            lShowSendMessage.setText("\u6587\u4EF6\u63A5\u53D7\u5B8C\u6BD5");
            break MISSING_BLOCK_LABEL_334;
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
        try
        {
            if(bis != null)
                bis.close();
            if(bos != null)
                bos.close();
            sReceive.close();
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
        break MISSING_BLOCK_LABEL_369;
        Exception exception;
        exception;
        try
        {
            if(bis != null)
                bis.close();
            if(bos != null)
                bos.close();
            sReceive.close();
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
        throw exception;
        try
        {
            if(bis != null)
                bis.close();
            if(bos != null)
                bos.close();
            sReceive.close();
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }上面的代码是我反编译.class文件得到的,为什么会出现我标示那里的问题,还有可以帮我把异常弄好吗?~
麻烦各位高手了~~

解决方案 »

  1.   

    大哥,自己不会改么,目前jad一类的反编译都有问题,但是大概意思还是能弄出来的
      

  2.   

    反编译try catch finally结构的时候就会出现这种问题
    简单修正下就行了
    对程序的大致逻辑不影响
      

  3.   

    这样试试,由于编码工具不同,所以编译效果不同,用xjad和jd-gui.exe 同时编译class文件,然后对比一下,没准能够互补一下,我就是这样看的,试试吧
      

  4.   

     break MISSING_BLOCK_LABEL_369;/////为什么这里会有这段东西的~?
    这个地方应该替换成 return;

    if(rt != 0)return;
    //因为只有state为APPROVE_OPTION(0)才能继续执行,为CANCEL_OPTION(1)和ERROR_OPTION(-1)此方法都将结束