UrlFetchApp MutantHttpException不起作用

Met*_*elf 5 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());
}
Run Code Online (Sandbox Code Playgroud)

但我正在尝试另一个错误网址,以便正常工作。

http://img8.uploadhouse.com/fileuploads/2058/20586362b34151eb10a4001e1c44305fe41bff6.jpg
Run Code Online (Sandbox Code Playgroud)

使用try and catch方法解决了句柄。

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

小智 4

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

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

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