在 Google Script 中尝试/捕获 HTTP 响应的最佳方法

HDC*_*rus 6 javascript try-catch google-apps-script

我还是 JavaScript 和 Google 应用程序脚本的新手,这是我第一次尝试使用“Try/Catch”语句。

我正在运行一个连接到页面的脚本。它大部分时间都可以正常连接,但有时它不会响应并抛出 http 错误(或者,响应将为空)。如果我收到错误代码,我想尝试/捕获此响应以使其第二次运行,但我不能 100% 确定我理解语法,因为无论我如何格式化它,它要么永远不会抛出异常,或总是抛出它。

这是我一直在试验的一些示例代码:

function myFunction() {
  var response =  UrlFetchApp.fetch("google.com"); 
  Logger.log('Response Code: ' + response.getResponseCode());

try {if(response.getResponseCode() === 200);
} catch (err) {
    throw 'Page connected';
}
}
Run Code Online (Sandbox Code Playgroud)

如果我能让这个工作,我相信我可以弄清楚其余的。但是,即使日志显示我收到了 200 的 HTTP 响应,它也永远不会抛出错误“页面已连接”。

如果有人可以指导我:

1)这是实现我想要的正确方法,还是尝试/捕获其他东西?2)正确的语法。

我会很感激。

Nic*_*ler 8

getResponseCode不会抛出异常但fetch会抛出异常,因此将其包含在您的try块中:

function myFunction() {
  try {
    var response =  UrlFetchApp.fetch("google.com"); 
    Logger.log('Response Code: ' + response.getResponseCode());

    if(response.getResponseCode() === 200) {
      // something
    }
  } catch (err) {
      // handle the error here
  }
}
Run Code Online (Sandbox Code Playgroud)


Emi*_*tov 7

截至今天,可以将muteHttpExceptions参数放入optionsof UrlFetchApp.fetch(url, options)。它使 HTTP 异常静音。

有了这个,就不需要try catch- 只需检查响应代码是否正常。