2012-07-30 3 views
11

UrlFetchApp.fetch에서 예외를 잡을 방법이 있습니까?UrlFetchApp.fetch 예외를 catch하는 방법

은 내가 응답 코드를 확인 response.getResponseCode()을 사용할 수 있습니다 생각하지만 난 404 오류가있는 경우, 스크립트가 계속 단지 왜 그렇게하지 UrlFetchApp.fetch

답변

17

편집 :이 매개 변수는 현재 documented here입니다.

문서화되지 않은 고급 옵션 "muteHttpExceptions"를 사용하면 200이 아닌 상태 코드가 반환 될 때 예외를 사용하지 않도록 설정 한 다음 응답의 상태 코드를 검사 할 수 있습니다. 자세한 내용과 예는 this issue에서 확인할 수 있습니다.

+1

고마워,이게 내가 원하는거야, 구글이 문서가 있어야합니다. – louis

+0

감사합니다. 항상이 기능을 잊어 버립니다. – oshliaer

3

에서 멈추지 예를 들어, 할 수 아니에요 시도 캐치를 사용하고 catch 블록에서 오류를 처리

try{ 
    //Your original code, UrlFetch etc 
    } 
    catch(e){ 
    // Logger.log(e); 
    //Handle error e here 
    // Parse e to get the response code 
    } 
+0

빠른 응답을 보내 주셔서 감사합니다. 예외가있을 때 응답 코드가 무엇인지 알아낼 수 있습니까? – louis

+0

오류 코드를 가져 오기 위해 구문 분석 할 수있는 오류 문자열을 전자로 받게됩니다. –

6

트릭이 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 블록을 사용해야 할 수도 있습니다.

관련 문제