Как уловить исключение UrlFetchApp.fetch
Есть ли способ уловить исключение из UrlFetchApp.fetch
?
Я думал, что могу использовать response.getResponseCode()
для проверки кода ответа, но я не могу, например, когда есть ошибка 404, script не продолжить и просто остановиться в UrlFetchApp.fetch
Ответы
Ответ 1
Изменить: этот параметр теперь задокументирован здесь.
Вы можете использовать недокументированную расширенную опцию "muteHttpExceptions", чтобы отключить исключения, когда возвращается код статуса не-200, а затем проверить код состояния ответа. Более подробную информацию и пример можно найти в этой проблеме.
Ответ 2
Трюк передает параметр muteHttpExceptions
UrlFetchApp.fetch()
.
Вот пример (непроверенный):
var payload = {"value": "key"}
var response = UrlFetchApp.fetch(
url,
{
method: "PUT",
contentType: "application/json",
payload: JSON.stringify(payload),
muteHttpExceptions: true,
}
);
var responseCode = response.getResponseCode()
var responseBody = response.getContentText()
if (responseCode === 200) {
var responseJson = JSON.parse(responseBody)
// ...
} else {
Logger.log(Utilities.formatString("Request failed. Expected 200, got %d: %s", responseCode, responseBody))
// ...
}
По какой-либо причине, если URL-адрес недоступен (например, служба, которую вы пытаетесь использовать, недоступна), все равно выглядит так: это ошибка, поэтому вам может понадобиться использовать блок try/catch
.
Ответ 3
почему бы вам не использовать try catch и обработать ошибку в блоке catch
try{
//Your original code, UrlFetch etc
}
catch(e){
// Logger.log(e);
//Handle error e here
// Parse e to get the response code
}