获取nsIX509CertDB importCertsFromFile失败的原因?

时间:2013-09-11 07:59:13

标签: javascript firefox firefox-addon xul

当我使用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);
}

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

1 个答案:

答案 0 :(得分:1)

由于XPCOM包装到NSS和大多数NSS的方式已经实现,因此没有任何方法可以获得比这些异常更详细的错误。你可以亲眼看到:The code充满了NS_ERROR_FAILURE返回(由XPConnect网桥在Javascript异常中翻译),但实际上已经没有了。此外,NSS status codes并不是真正详细的。

所以期望在大多数情况下获得非描述性NS_ERROR_FAILURE,如果文件无法访问,偶尔会在混合中添加一些NS_ERROR_FILE_*异常。