2017-12-30 40 views
3

일부 클라우드 서비스와 상호 작용하는 응용 프로그램을 개발하는 동안 Dropbox API가 특히 혼란 스럽습니다.Dropbox java API에서 오류를 처리하는 방법

특히 HTTP 오류를 찾는 방법. 예를 들어 요청이 실패하면 Google 드라이브 API로 IOException이 발생하지만 IOException을 GoogleJsonResponseException으로 구문 분석하여 상태 코드를 추출 할 수 있습니다.

try { 
    File f =drive.files().create(fileMetadata).setFields("id").execute(); 
    return f.getId(); 
} catch (IOException e) { 
    if (e instanceof GoogleJsonResponseException){ 
      int statusCode = ((GoogleJsonResponseException) e).getStatusCode(); 
      errorHandler(statusCode); 
    } else { 
     e.printStackTrace(); 
    } 
} 

그래서 java dropbox API (구체적으로 3.0.5)에는 이와 같은 것이 있습니다. 나는 주변을 둘러 보았으나 아무렇지 않은 것 같지만, 내가 언급 한 것처럼 매우 전문화되고 복잡한 코딩의 토끼 구멍을 내려 가기 전에 확인하고 싶었다. here. 그것이 가능하다면 나는 어떻게 이러한 예외들을 적절하게 처리 할 수 ​​있는지에 대한 예를 들어주십시오.

+0

'catch' 블록 내의'Exception'에'instanceof'가있는 것은 나쁜 스타일입니다. 'GoogleJsonResponseException'에 대해'catch' 블록을 작성하는 것이 훨씬 더 깔끔해질 것입니다. – Turing85

+0

언젠가는 제 코드를 다시 읽으려고합니다. 이것은 단지 두 번째 개정판 일뿐입니다. – Austin

+0

설명서를 읽었습니까? –

답변

1

[참조 용 가교가 : https://www.dropboxforum.com/t5/API-support/How-to-get-error-responses-java-api/m-p/258338#M14989]

보관 용 자바 SDK는 자동으로 기본 클래스에 HTTPS 응답에서 구조화 된 오류 데이터를 구문 분석, 당신만큼 또는 그 특이성의 작은 당신이 원하는대로 사용할 수 있습니다 . 구조화 된 오류 응답 (일반적으로 응답 본문의 JSON)은 상태 코드보다 훨씬 세분화되어 있습니다.

예를 들어

, 여기 당신이 연결된 지금 my post에서 StackOverflow의 문서에서 누락 된 코드 예제입니다 : (특정 오류 사례를 확인하는 방법을 보여줍니다

try { 
    SharedLinkMetadata sharedLinkMetadata = client.sharing().createSharedLinkWithSettings("/test.txt"); 
    System.out.println(sharedLinkMetadata.getUrl()); 
} catch (CreateSharedLinkWithSettingsErrorException ex) { 
    System.out.println(ex); 
} catch (DbxException ex) { 
    System.out.println(ex); 
} 

그리고 here's an example 즉, "경로 "그 예에서의 오류).

이러한 예외를 처리하는 권장 방법입니다. SDK가 원래의 분석되지 않은 오류 응답을 검색하는 방법을 제공한다고 생각하지 않습니다. (비록 SDK를 사용하고 싶지 않다면 직접 the HTTPS endpoints으로 전화 할 수 있습니다.)

+0

그런 다음 RetryException과 같은 DbxException에서 더 구체적인 오류를 어떻게 만듭니 까? – Austin

+0

여기에서 찾은 것 : https : //github.com/dropbox/dropbox-sdk-java/blob/e707252998d14821b06e7e2a2b69a9c80d7b0829/examples/web-file -browser/src/main/java/com/dropbox/core/examples/web_file_browser/Common.java 답변 해 주셔서 감사합니다. – Austin