【问题标题】:Java: Cannot return variable outside of try?Java:无法在尝试之外返回变量?
【发布时间】:2020-03-07 15:36:41
【问题描述】:

我不断从下面的代码中收到以下错误

错误:

AccountController.java:55: error: cannot find symbol
        return encoded;
               ^
  symbol:   variable encoded
  location: class AccountController
1 error

代码:

public static String hash(String password) {
    try {       
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        byte[] byteOfTextToHash = password.getBytes(StandardCharsets.UTF_8);
        byte[] hashedByetArray = digest.digest(byteOfTextToHash);
        String encoded;
        encoded = Base64.getEncoder().encodeToString(hashedByetArray);

    } catch(NoSuchAlgorithmException e) {
        e.printStackTrace();
    };
    return encoded;
}

感谢您的帮助!

【问题讨论】:

    标签: java swing javafx


    【解决方案1】:

    您的 encoded 变量超出范围。将其移出尝试将解决此问题:

    public static String hash(String password) {
        String encoded = null;
        try {       
            MessageDigest digest = MessageDigest.getInstance("SHA-256");
            byte[] byteOfTextToHash = password.getBytes(StandardCharsets.UTF_8);
            byte[] hashedByetArray = digest.digest(byteOfTextToHash);
            encoded = Base64.getEncoder().encodeToString(hashedByetArray);
    
        } catch(NoSuchAlgorithmException e) {
            e.printStackTrace();
        };
        return encoded;
    }
    

    【讨论】:

    • 我唯一要更改的是将String encoded = null 更改为String encoded = ""
    【解决方案2】:

    声明外部编码的变量 try 并用 null 或空字符串初始化它,如下所示

    String encoded = "";
        try {
         ....
       }catch(Exception exc):\{
         ....
       }
    
      return encoded
    

    ;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 2014-09-12
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多