Exception handling 捕捉;“找不到服务器”;例外

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

在一个独立的XUL应用程序中,我想捕获
服务器未找到
异常。我已经尝试检查
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的规定。我认为这限制了用户可能遇到的错误范围。