5

如何处理 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");
  }
}
4

2 回答 2

4

这似乎按设计工作。这muteHttpExeptions是为了做到这一点。如果脚本收到 HTTP 错误状态,它会告诉脚本正常运行。在您的第一个示例代码中,该错误不是 HTTP 错误。没有 Web 服务器可以返回任何类型的 HTTP 代码。网址不存在。连接到 Internet 的服务无法继续,并且没有 HTTP 异常。

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

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

于 2012-12-21T13:29:45.783 回答
1

That's still remains an issue in functions that are called in cells where the try-catch in this case is just ignored

于 2013-11-12T18:27:02.267 回答