我尝试编译以下内容,但在m16h(x)周围得到以下内容:
Line: 16
unreported exception java.lang.Exception; must be caught or declared to be thrown
不知道为什么。我已经尝试过各种方法,但是看来我做得对。
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Test{
public static void main(String args[]){
byte[] k1 = parseHexString("eb35a6c92c3b8c98033d739969fcc1f5ee08549e", 20);
byte[] k2 = parseHexString("57cb8b13a1f654de21104c551c13d8820b4d6de3", 20);
byte[] k3 = parseHexString("c4c4df2f8ad3683677f9667d789f94c7cffb5f39", 20);
System.out.println(k1);
System.out.println(k2);
System.out.println(k3);
System.out.println(xor(m16h(add(xor(xor(m16h(add(k1, m16h(add(k2, m16h(k3))))), k3), k2), k1)), k3));
}
public static byte[] m16h(byte[] m) throws Exception {
return parseHexString(SHA1(m), 20);
}
private static byte[] xor(byte[] x, byte[] y) {
int l = x.length;
if (l != y.length) {
return null;
}
byte[] ob = new byte[l];
for (int i = 0; i < l; i++) {
ob[i] = (byte) (x[i] ^ y[i]);
}
return ob;
}
public static byte[] parseHexString(String x, int len) {
byte[] ret = new byte[len];
for (int i = 0; i < len; i++) {
ret[i] = (byte) Integer.parseInt(x.substring(i * 2, (i * 2) + 2), 16);
}
return ret;
}
public static byte[] add(byte[] x, byte[] y) {
byte[] added = new byte[(x.length + y.length)];
System.arraycopy(x, 0, added, 0, x.length);
System.arraycopy(y, 0, added, x.length, y.length);
return added;
}
public static String SHA1(byte[] c) throws NoSuchAlgorithmException {
return base16encode(MessageDigest.getInstance("SHA-1").digest(c));
}
public static String base16encode(byte[] data) {
String res = "";
for (byte b : data) {
res = String.format("%s%02x", new Object[]{res, Byte.valueOf(b)});
}
return res;
}
}
public static byte[] m16h(byte[] m) throws Exception
方法的签名表明很容易引发Exception。
这意味着异常之一:
必须由呼叫者处理
try {
System.out.println(xor(m16h(add(xor(xor(m16h(add(k1, m16h(add(k2, m16h(k3))))), k3), k2), k1)), k3));
} catch (Exception e) {
e.printStackTrace();
}
必须由呼叫者重新抛出
public static void main(String[] args) throws Exception
我有一个方法被定义为: 编译器抱怨说,“未报告的异常政策异常;必须被捕获或声明为被抛出。我不知道为什么它建议我可以抛出,但“抛出”就在方法签名中。 被定义为: 当我尝试在try…catch中封装调用时,错误会保留,并会引发另一个错误,该错误表示try主体中从未抛出异常。我该如何补救?Am使用javase7和netneans 8
问题内容: 我有下面给出的代码。但是,当我尝试编译代码时,出现以下错误。 我在代码中捕获了以上异常。我不知道为什么会这样。 问题答案: 该语句在外部,将其放在try块中以有效地被catch块捕获
我的RMI服务器接口声明了一个方法foo(),该方法被声明为引发RemoteException和Exception,如下所示: 服务器实现为: 我的客户端在服务器上调用foo: 现在,当我运行客户端时,我得到: 从java类型的foo()中获取异常。rmi。异常异常:未声明的检查异常;嵌套的例外是:java。伊奥。InterruptedIOException:操作超时 Java文档是这样说的。rm
问题内容: 我正在尝试创建一个将字符串输出到文本文件的简单程序。使用在这里找到的代码,我整理了以下代码: J-grasp向我抛出以下错误: 由于我刚接触Java,所以我不知道这意味着什么。有人能指出我正确的方向吗? 问题答案: 您没有告诉编译器,如果文件不存在,则有可能抛出 a 将被抛出。 试试这个
问题内容: 尝试编译以下代码时遇到此错误。我想知道我做错了什么。 问题答案: 您要么需要在方法中 捕获 异常: 或 声明 抛出方法: