1

当我使用接口组件的importCertsFromFile()方法时nsIX509CertDB,任何失败似乎都会抛出相同的异常:

Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIX509CertDB.importCertsFromFile]

有没有办法确定失败的原因?

有时,它会显示一个带有原因的警报,例如“该证书已安装”。有时它只是在没有任何内置警报的情况下抛出异常,例如选择 word 文档或任何非证书文件。

certdb = components.classes[nsX509CertDB].getService(Components.interfaces.nsIX509CertDB);   

try{
   certdb.importCertsFromFile(null, fp.file, nsIX509Cert.CA_CERT);
   alert('The certificate was added succesfully!');
}catch(e){
   alert(e);
}

我想确定失败的原因,因此如果组件在这种情况下还没有错误,我可以显示正确的错误消息。这可能吗?

4

1 回答 1

1

由于 NSS 和大多数 NSS 的 XPCOM 包装器的实现方式,实际上没有任何方法可以获取比这些异常更详细的错误。您可以亲眼看到:代码充满了NS_ERROR_FAILURE返回(由 XPConnect 桥在 Javascript 异常中翻译),但实际上仅此而已。此外,NSS 状态代码一开始并不是很详细。

因此,大多数情况下都希望获得非描述性的内容,如果文件不可访问,则偶尔会添加NS_ERROR_FAILURE一些异常。NS_ERROR_FILE_*

于 2013-09-11T12:20:39.643 回答