• 请不要在回答技术问题时复制粘贴 AI 生成的内容
git00ll
V2EX  ›  程序员

发现一个神奇的现象, idea 无法反编译 catch 块中带 return 的 groovy 代码

  •  
  •   git00ll · Jul 3, 2021 · 2496 views
    This topic created in 1786 days ago, the information mentioned may be changed or developed.

    catch 代码块中含有 return,会导致 idea 反编译不出来

    如果代码是这样的

    @CompileStatic
    class TestGroovy {
    
        void funcA() {
            try {
                def a = 1 + 1
            } catch (e) {
                println e
            }
        }
    }
    

    idea 反编译结果

        public void funcA() {
            try {
                try {
                    int a = 1 + 1;
                } catch (Exception var6) {
                    DefaultGroovyMethods.println(this, var6);
                    Object var10000 = null;
                }
    
            } finally {
                ;
            }
        }
    

    上面没问题,大概能根据反编译的代码看出原始代码。

    如果在 catch 块中添加 return 语句

    @CompileStatic
    class TestGroovy {
    
        void funcA() {
            try {
                def a = 1 + 1
            } catch (e) {
                println e
                return
            }
        }
    }
    
    

    idea 反编译无法反编译

        public void funcA() {
            // $FF: Couldn't be decompiled
        }
    
    

    使用 jd.gui 进行反编译,能正常反编译,而且变量名更友好。

      public void funcA() {
        try {
          int a = 1 + 1;
        } catch (Exception e) {
          DefaultGroovyMethods.println(this, e);
          null;
          return;
        } finally {}
      }
    

    idea 2019.03

    所以如何能让 idea 的反编译达到 jd.gui 这种效果呢

    3 replies    2021-07-03 16:39:22 +08:00
    git00ll
        1
    git00ll  
    OP
       Jul 3, 2021
    使用 jd 反编译出来的代码 return 上面一行,是不符合 java 语法的
    cweijan
        2
    cweijan  
       Jul 3, 2021
    @git00ll 我去手动试了下, return 这段代码并没有什么问题.
    paouke
        3
    paouke  
       Jul 3, 2021 via iPhone
    要不,升级下 idea ?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   6044 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 02:04 · PVG 10:04 · LAX 19:04 · JFK 22:04
    ♥ Do have faith in what you're doing.