Exception handling 捕捉;“找不到服务器”;例外
在一个独立的XUL应用程序中,我想捕获Exception handling 捕捉;“找不到服务器”;例外,exception-handling,xul,xulrunner,Exception Handling,Xul,Xulrunner,在一个独立的XUL应用程序中,我想捕获服务器未找到异常。我已经尝试检查nsIWebProgressListener的onStateChange事件中的状态,但这似乎不起作用。我的onStateChange事件实现如下所示。我假设如果STATE\u START或STATE\u STOP未返回有效值,则页面加载有问题,并向用户显示错误消息 onStateChange: function(aProgress, aRequest, aFlag, aStatus) { const STATE_STAR
服务器未找到
异常。我已经尝试检查nsIWebProgressListener
的onStateChange
事件中的状态,但这似乎不起作用。我的onStateChange
事件实现如下所示。我假设如果STATE\u START
或STATE\u STOP
未返回有效值,则页面加载有问题,并向用户显示错误消息
onStateChange: function(aProgress, aRequest, aFlag, aStatus) {
const STATE_START = Components.interfaces.nsIWebProgressListener.STATE_START;
const STATE_STOP = Components.interfaces.nsIWebProgressListener.STATE_STOP;
if(aFlag & STATE_START) {
document.getElementById("progressBar").hidden = false;
}
if(aFlag & STATE_STOP) {
setTimeout(function() { document.getElementById("progressBar").hidden = true; }, 2000);
}
if(aFlag & (!STATE_START | !STATE_STOP)) {
alert("Your connection seems to be down. Please confirm with your system admin.");
}
return 0;
},
有人能告诉我我做错了什么吗?提前感谢。指示是否存在连接错误的
onStateChange
参数是aStatus
。例如,您可以使用:
if((aFlag和STATE_STOP)和&!Components.issuccescode(aStatus))
{
警报(“您的连接似乎已断开。请与您的系统管理员确认”);
}
您还可以将
aStatus
与Components.results.NS\u ERROR\u UNKNOWN\u HOST
进行比较,这与“服务器未找到”错误相对应。但是,如果连接中断,可能会出现许多其他错误,例如,NS\u ERROR\u connection\u densed
(连接失败)、NS\u ERROR\u UNKNOWN\u PROXY\u HOST
(未找到代理)、NS\u ERROR\u OFFLINE
(在脱机状态下尝试连接)。您可以在中找到网络错误代码的完整列表。您能更具体地说明一下您在做什么吗?如果我理解正确,您正在尝试将URL加载到
元素中,并且担心错误控制台中出现异常?这个例外到底说明了什么?我正在开发一个桌面应用程序,它可以作为在线服务的网关。在线服务在浏览器元素中启动。我希望能够判断是否没有互联网接入,并向用户显示适当的消息。使用loadURI()
方法加载。我已经尝试在一个try-catch块中围绕它,如图所示:try{document.getElementById(“浏览器id”).loadURI(“http://www.online-service.com);}catch(e){alert(“您的Internet连接似乎已断开。请咨询您的网络管理员。”);}
,但catch块未被执行。当然,DNS解析是一个异步操作-您不能期望在那里同步获得异常。请编辑您的问题并添加您尝试的nsIWebProgressListener
代码,这是正确的方法,您一定是在某个地方出错了。非常感谢您提供的指针。我已经编辑了这个问题,谢谢你,帕兰特<代码>如果((aFlag&STATE_STOP)&&(aStatus==Components.results.NS_ERROR_UNKNOWN_HOST)){alert(“您的连接似乎已断开。请与您的网络管理员确认”);}工作正常。但是上面提到的代码即使在有连接的情况下也会抛出异常。有不同的错误代码,大多数错误代码并不意味着用户处于脱机状态-您应该检查您得到的是哪一个。谢谢。我已经为未知主机、拒绝连接、脱机和代理实现了错误检查。该应用程序包含指向在线服务的链接,因此用户无需输入URL。实际上,没有为用户输入URL的规定。我认为这限制了用户可能遇到的错误范围。