UrlFetchApp muteHttpException不起作用

时间:2012-12-21 03:34:53

标签: google-apps-script

如何处理urlfetch错误?我正在尝试muteHttpExceptions: true,但它无效并且脚本会中断。

function myFunction() {
  var result = UrlFetchApp.fetch("http://www.soccer-wallpapers.net/soccer_wallpaper/barcelona_fc_barcelona_360.jpg ", {
muteHttpExceptions: true });
  Logger.log("code: " + result.getResponseCode());
  Logger.log("text: " + result.getContentText());
}

但我正在尝试另一个错误网址才能正常工作。

http://img8.uploadhouse.com/fileuploads/2058/20586362b34151eb10a4001e1c44305fe41bff6.jpg

使用try和catch方法解决句柄。

  try
  {
    var page = UrlFetchApp.fetch("http://www.soccer-wallpapers.net/soccer_wallpaper/barcelona_fc_barcelona_360.jpg");
  }
  catch(err)
  {
    Browser.msgBox("error");
  }
}

2 个答案:

答案 0 :(得分:3)

这似乎按设计工作。 muteHttpExeptions就是这样做的。如果收到HTTP错误状态,它会告诉脚本正常进行。在您的第一个示例代码中,错误不是HTTP错误。没有Web服务器可以返回任何类型的HTTP代码。该URL不存在。到达互联网的服务无法继续,并且没有HTTP例外。

当我访问http://www.soccer-wallpapers.net/soccer_wallpaper/barcelona_fc_barcelona_360.jpg时,我收到超时消息。没有回应我的要求。看来soccer-wallpapers.net不再响应请求了。它确实有一个DNS条目,但不响应我所在位置的ping。

如果您必须处理错误的URL,可能会关闭服务器和其他服务器错误,那么您将需要使用try{}catch(){}块。你如何处理这些错误。 muteHttpExceptions标志更多地用于处理作为应用程序一部分的HTTP错误,而不是在脚本级别抛出错误。

答案 1 :(得分:0)

在单元格中调用的函数中,这仍然是一个问题,在这种情况下,try-catch在这种情况下被忽略