0

我已将以下内容导入我的项目

import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.io.*;

以下是告诉我“未处理的异常类型 NoSuchPaddingException”

Cipher c = Cipher.getInstance("AES");

我正在使用 JaveSE-1.6。

有什么想法会导致这种情况吗?

4

1 回答 1

5

Cipher.getInstance(...)抛出两种异常,并要求您处理它们。

Cipher c = Cipher.getInstance("AES");如果您希望在其他地方处理它,请使用包含重新抛出异常的方法:

public void foo(){ throws Exception ... }

或者更好的是,将方法包含在 try-catch 块中:

try{
   Cipher c = Cipher.getInstance("AES");
}
catch(Exception e){
   //do something about it
}

你也可以变得更漂亮,这样做:

try{
   Cipher c = Cipher.getInstance("AES");
}
catch(NoSuchAlgorithmException e){
   //handle the case of having no matching algorithm
}
catch(NoSuchPaddingException e){
   //handle the case of a padding problem
}

某些 Java 方法会抛出异常,其中一些需要您处理它们。Java API 文档中带有Throwsafter 方法的任何内容都需要处理。一般来说,他们让你这样做是有充分理由的。在这种情况下,如果你不能得到正确的密码,你就不能加密任何东西。

于 2013-05-17T16:25:19.580 回答