Components.lastResult 编辑
Components.lastResult
returns the numeric nsresult
code that was the result code of the last XPCOM method called via XPConnect.
Introduction
Generally, Components.lastResult
is only useful for testing the result of XPCOM methods that can return interesting 'success' codes. This is because failure result codes get converted by XPConnect into exceptions that are thrown into the calling JavaScript method. Most interfaces only return one success code -- NS_OK
-- so Components.lastResult
is rarely necessary.
In cases where Components.lastResult
is used, it is best to get it right away after the target call is made and save it in a local variable to test its value rather than doing multiple tests against Components.lastResult
. This is because many 'Components' properties and methods are themselves implemented using XPConnect and subsequent calls to Components.lastResult
might reflect the result of 'implicit' XPConnect calls rather than the result of the target call.
Example
In the following example, the local variable i
contains the actual result returned by bar()
(assuming that bar()
is called via XPConnect), and Components.lastResult
contains the success code returned by bar()
.
// Given that foo.bar is a method that might return // the success codes NS_OK, '5', and '6' OR some error code... try { var i = foo.bar(); switch (Components.lastResult) { case Components.results.NS_OK: // NS_OK is good! break; case 5: // do something with 5 here break; case 6: // do something with 6 here break; default: // this was a success code we did not expect. Bad component! break; } // and so on.... } catch (e) { // the call threw an exception or a native component returned // a failure code! if (e instanceof Components.interfaces.nsIXPCException) { // we might do something interesting here with the exception object var rv = e.result; } else { // if we don't know how to handle it then rethrow throw e; } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论