@Test public void toUserPresentableException() { String action = "foo"; IOException exception = assertThrows( IOException.class, () -> errorExtractor.toUserPresentableException(accessDenied, action)); assertThat(exception) .hasMessageThat() .isEqualTo(String.format("Encountered an error while %s: Forbidden", action)); }
public IOException toUserPresentableException(IOException e, String action) throws IOException { throw new IOException(toUserPresentableMessage(e, action), e); }
ApiErrorExtractor { public IOException toUserPresentableException(IOException e, String action) throws IOException { throw new IOException(toUserPresentableMessage(e, action), e); } }
ApiErrorExtractor { public IOException toUserPresentableException(IOException e, String action) throws IOException { throw new IOException(toUserPresentableMessage(e, action), e); }  }
ApiErrorExtractor { public IOException toUserPresentableException(IOException e, String action) throws IOException { throw new IOException(toUserPresentableMessage(e, action), e); }  boolean requestFailure(IOException e); boolean accessDenied(IOException e); boolean badRequest(IOException e); boolean unauthorized(IOException e); boolean accessDeniedNonRecoverable(IOException e); boolean clientError(IOException e); boolean internalServerError(IOException e); boolean itemAlreadyExists(IOException e); boolean itemNotFound(IOException e); boolean fieldSizeTooLarge(IOException e); boolean resourceNotReady(IOException e); boolean preconditionNotMet(IOException e); boolean rangeNotSatisfiable(IOException e); boolean rateLimited(IOException e); boolean quotaExceeded(IOException e); boolean userProjectMissing(IOException e); boolean ioError(Throwable throwable); boolean socketError(Throwable throwable); boolean readTimedOut(IOException e); String getErrorMessage(IOException e); IOException toUserPresentableException(IOException e, String action); String toUserPresentableMessage(IOException e, @Nullable String action); String toUserPresentableMessage(IOException e); @Nullable String getDebugInfo(IOException e); @Nullable static GoogleJsonResponseException getJsonResponseException(Throwable throwable); }
ApiErrorExtractor { public IOException toUserPresentableException(IOException e, String action) throws IOException { throw new IOException(toUserPresentableMessage(e, action), e); }  boolean requestFailure(IOException e); boolean accessDenied(IOException e); boolean badRequest(IOException e); boolean unauthorized(IOException e); boolean accessDeniedNonRecoverable(IOException e); boolean clientError(IOException e); boolean internalServerError(IOException e); boolean itemAlreadyExists(IOException e); boolean itemNotFound(IOException e); boolean fieldSizeTooLarge(IOException e); boolean resourceNotReady(IOException e); boolean preconditionNotMet(IOException e); boolean rangeNotSatisfiable(IOException e); boolean rateLimited(IOException e); boolean quotaExceeded(IOException e); boolean userProjectMissing(IOException e); boolean ioError(Throwable throwable); boolean socketError(Throwable throwable); boolean readTimedOut(IOException e); String getErrorMessage(IOException e); IOException toUserPresentableException(IOException e, String action); String toUserPresentableMessage(IOException e, @Nullable String action); String toUserPresentableMessage(IOException e); @Nullable String getDebugInfo(IOException e); @Nullable static GoogleJsonResponseException getJsonResponseException(Throwable throwable); static final ApiErrorExtractor INSTANCE; static final int STATUS_CODE_RANGE_NOT_SATISFIABLE; static final String GLOBAL_DOMAIN; static final String USAGE_LIMITS_DOMAIN; static final String RATE_LIMITED_REASON; static final String USER_RATE_LIMITED_REASON; static final String QUOTA_EXCEEDED_REASON; static final String ACCOUNT_DISABLED_REASON; static final String ACCESS_NOT_CONFIGURED_REASON; static final String RESOURCE_NOT_READY_REASON; static final String FIELD_SIZE_TOO_LARGE_REASON; static final String USER_PROJECT_MISSING_MESSAGE; }