3 回答

TA貢獻1829條經(jīng)驗 獲得超9個贊
你用的是什么IDE?您應(yīng)該能夠輕松解決此錯誤,而無需任何外部幫助。在 IntelliJ 上,按 Alt + Enter 將為您提供將加密方法調(diào)用包含在 try/catch 塊中的選項,如下所示:
try {
MD5Digest.encrypt(entered_password);
} catch (Exception e) {
e.printStackTrace();
}
該方法會引發(fā)異常,這基本上意味著它可能會遇到錯誤,而 try catch 塊是一種處理該錯誤而不會導(dǎo)致程序崩潰的方法。
encrypt 方法位于 MD5Digest 類的底部。看第一行:
public static void encrypt(String original) throws Exception
它告訴編譯器它可能會遇到異常(錯誤),并且您應(yīng)該準備好處理這種可能性。因此需要 try/catch。它將嘗試 try 括號中的內(nèi)容,然后如果遇到錯誤,將執(zhí)行 catch 塊中的代碼。

TA貢獻1848條經(jīng)驗 獲得超6個贊
將您的主要方法更改為: public static void main(String []args) throws Exception {
.
由于您是通過方法調(diào)用encrypt
方法main
,因此您還需要將 也添加throws Exception
到main
方法中。希望這可以幫助!

TA貢獻1829條經(jīng)驗 獲得超6個贊
基本上你只需要給你的方法一個關(guān)于可能異常的標志,在這種情況下稱為檢查異常。因此,您使用MessageDigest抽象類,并且您訪問的方法getInstance具有簽名為throws NoSuchAlgorithmException. 正如@Dymas 所說,IDE 有助于更清楚地看到它。
所以當(dāng)encrypt方法使用getInstance方法時,你應(yīng)該encript知道這個檢查的異常。此外,由于main調(diào)用encript會帶來異常,因此getInstance您還應(yīng)該main告知這一點。這導(dǎo)致您提出:
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,這是關(guān)于異常層次結(jié)構(gòu),您也可以在這里查看圖片:
https://itblackbelt.wordpress.com/2015/02/17/checked-vs-unchecked-exception-in-java-example/
添加回答
舉報