代码之家  ›  专栏  ›  技术社区  ›  emha

是否需要在java中的整个try/catch语句周围加括号?真奇怪的东西

  •  0
  • emha  · 技术社区  · 12 年前

    我需要从Android中的清单中解析包版本。我直接在主要活动中做,不知道是不是错了。

    我现在无法测试这是否有效,由于各种原因,尽管我正在运行Eclipse,但几天后我就无法测试了,但这真的很伤我的心,因为我是一个相当担心的人:

    { try {
        String version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
    } catch (NameNotFoundException e) {
        Log.e("tag", e.getMessage());
    } }
    

    你注意到WHOLE语句前后的括号了吗?如果我删除它们,Eclipse会说

    令牌“{”上出现语法错误,{应在此令牌之后出现

    在前面的活动开始中,以及在它之后的任何方法或语句中的类似内容。

    我在谷歌上搜索了一下,因为这是我能做的,但没有发现需要它们。Java教程,示例拼写try-catch没有这个。我是在做一些非常愚蠢的事情,还是这是正常的行为和我的行为准则 应该 我回来后再跑?

    再次为这个问题感到抱歉,但我只是需要。

    提前谢谢。

    2 回复  |  直到 12 年前
        1
  •  3
  •   Ted Hopp    12 年前

    您可能拥有任何方法之外的代码。使用大括号,Java将其视为实例初始化器块。没有牙套是违法的。

    该代码的另一个错误是初始化了变量 version 然后立即丢失信息,因为 版本 是本地的 try 块该变量可能应该在块外部声明。

        2
  •  2
  •   kosa    12 年前

    我想这个试块就在里面 class { 在您的代码中。

    如果是这样,您需要它们,因为在java中,它被视为 instance initialize

    EDIT:
    

    在问题中添加了更多信息后,是的,这不应该是初始化程序块,它应该封装在一个方法中。