未报告的异常java.lang.exception;必须被抓住或宣布被抛出
我尝试编译以下内容,但在m16h(x)左右得到以下内容: 不知道为什么。我尝试过各种方法,但似乎我做得对未报告的异常java.lang.exception;必须被抓住或宣布被抛出,java,Java,我尝试编译以下内容,但在m16h(x)左右得到以下内容: 不知道为什么。我尝试过各种方法,但似乎我做得对 import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Test{ public static void main(String args[]){ byte[] k1 =
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;
}
}
import java.math.biginger;
导入java.security.MessageDigest;
导入java.security.NoSuchAlgorithmException;
公共类测试{
公共静态void main(字符串参数[]){
字节[]k1=parseHexString(“eb35a6c92c3b8c98033d739969fcc1f5ee08549e”,20);
字节[]k2=parseHexString(“57cb8b13a1f654de21104c551c13d8820b4d6de3”,20);
字节[]k3=parseHexString(“c4c4df2f8ad3683677f9667d789f94c7cffb5f39”,20);
系统输出打印Ln(k1);
系统输出打印Ln(k2);
系统输出打印LN(k3);
系统输出打印ln(xor(m16h)(添加(xor)(xor(m16h)(添加(k1,m16h)(添加(k2,m16h(k3 ')))),k3,k2),k1)),k3));
}
公共静态字节[]m16h(字节[]m)引发异常{
返回字符串(SHA1(m),20);
}
专用静态字节[]异或(字节[]x,字节[]y){
int l=x.length;
如果(l!=y长度){
返回null;
}
字节[]ob=新字节[l];
对于(int i=0;i
公共静态字节[]m16h(字节[]m)引发异常
方法的签名表示异常容易被抛出
这意味着例外情况可能是:
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 {
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
在main方法中,调用
m16h
可能导致抛出异常。在这种情况下,您有两种选择:
- 在main方法中自己处理异常
- 通过将
附加到其声明中,指示main方法可以抛出异常抛出异常
publicstaticvoidmain(字符串args[])抛出异常
用try/catch块围绕调用此方法的行,如下所示:
try {
System.out.println(xor(m16h(add(xor(xor(m16h(add(k1, m16h(add(k2, m16h(k3))))), k3), k2), k1)), k3));
}catch (Exception e){
System.out.println (e.getMessage());
}