NoSuchAlgorithmException

NoSuchAlgorithmException

我正在尝试使用Jacksum API来generate a Whirlpool hash,但是我遇到了NoSuchAlgorithmException:

import java.security.NoSuchAlgorithmException;
import jonelo.jacksum.JacksumAPI;
import jonelo.jacksum.algorithm.AbstractChecksum;

public static String genHash(String inText) {

    AbstractChecksum checksum = null;
    checksum = JacksumAPI.getChecksumInstance("whirlpool");
    checksum.update(inText.getBytes());
    return checksum.getFormattedValue();

}


我尝试了其他流行的算法(sha256,md5),它们显然都“不是这样”。

./libsdpg.java:27: error: unreported exception NoSuchAlgorithmException; must be caught or declared to be thrown
    checksum = JacksumAPI.getChecksumInstance("whirlpool");
                                             ^
1 error


编辑:我添加了try-catch,现在它实际上正在得到错误。

最佳答案

您实际上并不是在“获取”异常。编译器告诉您您未能正确处理检查的异常。

JacksumAPI#getChecksumInstance(java.lang.String)方法引发一个称为NoSuchAlgorithmException的检查异常。被检查的异常必须被显式处理(使用try-catch),或者封装方法必须声明将其包括在其签名中来引发该异常。因此,您的选择是:

try {
   ...
   checksum = JacksumAPI.getChecksumInstance("whirlpool");
   ...
} catch(NoSuchAlgorithmException e) {
   //handle the exception
}


或将您的方法签名更改为:

public static String genHash(String inText) throws NoSuchAlgorithmException {
    ...
}


请记住,使用第二种方法,您只是将处理推到了更高的层次(即,调用genHash的地方);您基本上必须在某个时候处理它。

10-08 11:28