ASN1Object
(以及所有继承它的类)都有一个getEncoded()
方法,该方法应该返回DER / BER编码。但是它被标记为抛出IOException。
我希望编码在内存中完成,不会执行IO。此外,这会通过要求抛出或尝试捕获来使周围的代码复杂化。
为什么throws IOException
在那里?
答案 0 :(得分:0)
public byte[] getEncoded()
throws IOException
{
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
ASN1OutputStream aOut = new ASN1OutputStream(bOut);
aOut.writeObject(this); // This is where the throws happens.
return bOut.toByteArray();
}
public void writeObject(
ASN1Encodable obj)
throws IOException
{
if (obj != null)
{
obj.toASN1Primitive().encode(this);
}
else
{
throw new IOException("null object detected");
}
}
除非子类覆盖getEncoded
,否则此上下文中的IOException
表示所涉及的一个或多个对象为空。