一个try 后面两个catch语句 报错的话后边的catch会空指针异常吗
时间: 2023-08-27 17:17:18 浏览: 97
Java中异常处理之try和catch代码块的使用
5星 · 资源好评率100%
KeyInfoFactory.createPrivateKeyInfo(
new ECPrivateKeyParameters(((java.security.interfaces.ECPrivateKey) privateKey).getS())); return Base64.encodeToString(privateKeyInfo.getEncoded(), Base64.DEFAULT);
}
public static PrivateKey decodePrivateKeyFromBase64(String base64在一个 `try` 后面的两个 `catch` 语句中,如果报错的话,后面的 `catchPrivateKey) throws Exception {
byte[] privateKeyBytes = Base64.decode(base64PrivateKey, Base64.DEFAULT);
PrivateKeyInfo privateKeyInfo` 会被执行,而不会抛出空指针异常。
当一个异常被抛出时,Java 会按照 = PrivateKeyInfo.getInstance(privateKeyBytes);
ECPrivateKeyParameters privateKeyParameters = (ECPrivateKeyParameters) PrivateKeyFactory.createKey(privateKey `try` 后面的 `catch` 语句的顺序来匹配异常类型。如果第一个 `catch` 的异常Info);
ECParameterSpec ecParameterSpec = ECNamedCurveTable.getParameterSpec(CURVE_NAME);
ECPrivateKeySpec ecPrivateKeySpec类型与抛出的异常类型匹配,那么该 `catch` 语句块将被执行。如果匹配失败,则 = new ECPrivateKeySpec(privateKeyParameters.getD(), ecParameterSpec);
KeyFactory keyFactory = KeyFactory.getInstance("EC", BouncyCastleProvider.PROVIDER_NAME);
return keyFactory.generatePrivate(ecPrivateKeySpec);
}
}
```
这个工具类使用会继续匹配后面的 `catch` 语句块,直到找到匹配的异常类型或者没有更了BouncyCastle提供的SM2算法库。你可以使用`generateKeyPair`方法来生成一对公私钥多的 `catch` 语句可以匹配。
因此,如果报错的异常类型与第一个 `catch` 语,使用`encrypt`和`decrypt`方法进行加密和解密操作,使用`encodePublicKeyToBase64`和`encode句块中指定的异常类型不匹配,那么程序会继续尝试匹配后面的 `catch` PrivateKeyToBase64`方法将公私钥转换为Base64字符串,使用`decodePublicKeyFromBase64`和`decodePrivateKey语句块。如果后面的 `catch` 语句块也无法匹配报错的异常类型,那么异常FromBase64`方法将Base64字符串转换为公私钥。
请确保在使用之前将BouncyCastle作为Provider添加到你的Android项目中。
阅读全文