【问题标题】:Method throws exception that java says isn't handled方法抛出 java 说未处理的异常
【发布时间】:2016-04-03 15:35:37
【问题描述】:

当我尝试在我的 Main 类中运行此代码时,我的 IDE 弹出并说我没有处理我在方法开始时抛出的异常。

public byte[] generateSalt() throws NoSuchAlgorithmException{

        // VERY important to use SecureRandom instead of just Random
        SecureRandom random = SecureRandom.getInstance("SHA1PRNG");

        // Generate a 8 byte (64 bit) salt as recommended by RSA PKCS5
        byte[] salt = new byte[8];
        random.nextBytes(salt);

        return salt;

}

【问题讨论】:

  • 那么你的问题是什么?如果您不知道如何处理异常,我建议您像在此方法中一样重新抛出它。
  • 你在哪里打电话generateSalt?你在那里处理异常吗?编译器在哪里抱怨?
  • 你在哪里调用这个方法,发布那部分
  • 为什么使用特定的 SecureRandom 实现很重要。您可以使用默认的SecureRandom,它不会抛出异常供您处理。

标签: java passwords salt throws


【解决方案1】:

如果此方法正在抛出异常,则使用它的每个方法都需要捕获该异常,或者也将其抛出。

如果使用generateSalt 的方法没有执行两者之一,那么编译器将抱怨未处理的异常。

解决方案很简单,在调用方法上要么在签名中添加throws NoSuchAlgorithmException,要么这样做:

try {
  generateSalt();
} catch (NoSuchAlgorithmException e) {
  // do something with the exception
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多