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

时间:2014-10-10 12:48:17

标签: javascript google-apps-script try-catch

我还不熟悉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';
}
}

如果我可以让它发挥作用,我相信我能弄明白其余的。但是,即使日志显示我得到200的HTTP响应,它也不会抛出错误的页面连接'。

如果有人可以指导我:

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

我将非常感激。

2 个答案:

答案 0 :(得分:4)

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
  }
}

答案 1 :(得分:1)

截至今天,可以将muteHttpExceptions参数放在options的{​​{1}}中。它使HTTP异常静音。

由此,不需要UrlFetchApp.fetch(url, options) - 只需检查响应代码是否正常。