当我使用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);
}
我想确定失败的原因,因此我可以显示正确的错误消息,如果该组件还没有针对该情况的错误。这可能吗?
答案 0 :(得分:1)
由于XPCOM包装到NSS和大多数NSS的方式已经实现,因此没有任何方法可以获得比这些异常更详细的错误。你可以亲眼看到:The code充满了NS_ERROR_FAILURE
返回(由XPConnect网桥在Javascript异常中翻译),但实际上已经没有了。此外,NSS status codes并不是真正详细的。
所以期望在大多数情况下获得非描述性NS_ERROR_FAILURE
,如果文件无法访问,偶尔会在混合中添加一些NS_ERROR_FILE_*
异常。