错误的异常使用 - 来自catch的返回值

dev*_*dev 3 java exception

这是一段代码.

  private boolean CheckTerm()
      {
          String str = lGskCompoundNumber;
          if (lPrefix.trim() == "" || lNumber.trim() == "")
              return false;

          try
          {
              Integer.parseInt(lNumber);
          }
          catch (Exception ex)
          {
              return false;
          }
          if (lHasAmpersand)
              str = lGskCompoundNumber.replace("&", "");
          return str.equals(lPrefix + lInitSep + lNumber + lEndSep + lSuffix);
      }
Run Code Online (Sandbox Code Playgroud)

我应该从catch块返回某个值还是使用权?

Tom*_*icz 9

这段代码是正确的,看起来并不可疑.解析失败时(请注意,您应该捕获可能的最窄的异常,NumberFormatException在这种情况下),整个验证失败,因此您将返回false.否则,您将执行其他检查(在catch块之后)并返回其结果.这段代码很好.

如果您发现它有点难以阅读,请考虑以下重构:

private boolean checkTerm() {
    try
        {
            String str = lGskCompoundNumber;
            if (lPrefix.trim() == "" || lNumber.trim() == "")
                return false;
            Integer.parseInt(lNumber);
            if (lHasAmpersand)
                str = lGskCompoundNumber.replace("&", "");
            return str.equals(lPrefix + lInitSep + lNumber + lEndSep + lSuffix);
        }
        catch (NumberFormatException ex)
        {
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)