3 回答

TA贡献1829条经验 获得超9个赞
你用的是什么IDE?您应该能够轻松解决此错误,而无需任何外部帮助。在 IntelliJ 上,按 Alt + Enter 将为您提供将加密方法调用包含在 try/catch 块中的选项,如下所示:
try {
MD5Digest.encrypt(entered_password);
} catch (Exception e) {
e.printStackTrace();
}
该方法会引发异常,这基本上意味着它可能会遇到错误,而 try catch 块是一种处理该错误而不会导致程序崩溃的方法。
encrypt 方法位于 MD5Digest 类的底部。看第一行:
public static void encrypt(String original) throws Exception
它告诉编译器它可能会遇到异常(错误),并且您应该准备好处理这种可能性。因此需要 try/catch。它将尝试 try 括号中的内容,然后如果遇到错误,将执行 catch 块中的代码。

TA贡献1848条经验 获得超6个赞
将您的主要方法更改为: public static void main(String []args) throws Exception {
.
由于您是通过方法调用encrypt
方法main
,因此您还需要将 也添加throws Exception
到main
方法中。希望这可以帮助!

TA贡献1829条经验 获得超6个赞
基本上你只需要给你的方法一个关于可能异常的标志,在这种情况下称为检查异常。因此,您使用MessageDigest抽象类,并且您访问的方法getInstance具有签名为throws NoSuchAlgorithmException. 正如@Dymas 所说,IDE 有助于更清楚地看到它。
所以当encrypt方法使用getInstance方法时,你应该encript知道这个检查的异常。此外,由于main调用encript会带来异常,因此getInstance您还应该main告知这一点。这导致您提出:
public static void main(String []args) throws NoSuchAlgorithmException
public static void encrypt(String original) throws NoSuchAlgorithmException
这个页面也很好地解释了它,它可能有助于进一步阅读:
https://www.geeksforgeeks.org/checked-vs-unchecked-exceptions-in-java/
您可以使用throws NoSuchAlgorithmException或@K.Kretz 所说的签名throws Exception,这是关于异常层次结构,您也可以在这里查看图片:
https://itblackbelt.wordpress.com/2015/02/17/checked-vs-unchecked-exception-in-java-example/
添加回答
举报