public static QueryResponseCore CreateFromException(Exception exception) { QueryResponseCore queryResponseCore; if (exception is CosmosException cosmosException) { queryResponseCore = CreateFromCosmosException(cosmosException); } else if (exception is Microsoft.Azure.Documents.DocumentClientException documentClientException) { queryResponseCore = CreateFromDocumentClientException(documentClientException); } else if (exception is QueryException queryException) { CosmosException convertedException = queryException.Accept(QueryExceptionConverter.Singleton); queryResponseCore = CreateFromCosmosException(convertedException); } else if (exception is ExceptionWithStackTraceException exceptionWithStackTrace) { queryResponseCore = QueryResponseFactory.CreateFromExceptionWithStackTrace(exceptionWithStackTrace); } else { if (exception.InnerException != null) { // retry with the inner exception queryResponseCore = QueryResponseFactory.CreateFromException(exception.InnerException); } else { CosmosException unkownCosmosException = CosmosExceptionFactory.CreateInternalServerErrorException( subStatusCode: default,
private static QueryResponseCore CreateFromExceptionWithStackTrace(ExceptionWithStackTraceException exceptionWithStackTrace) { // Use the original stack trace from the inner exception. if (exceptionWithStackTrace.InnerException is DocumentClientException || exceptionWithStackTrace.InnerException is CosmosException) { return(QueryResponseFactory.CreateFromException(exceptionWithStackTrace.InnerException)); } QueryResponseCore queryResponseCore = QueryResponseFactory.CreateFromException(exceptionWithStackTrace.InnerException); CosmosException cosmosException = queryResponseCore.CosmosException; queryResponseCore = QueryResponseCore.CreateFailure( statusCode: queryResponseCore.StatusCode, subStatusCodes: queryResponseCore.SubStatusCode, cosmosException: CosmosExceptionFactory.Create( statusCode: cosmosException.StatusCode, message: cosmosException.Message, stackTrace: exceptionWithStackTrace.StackTrace, headers: cosmosException.Headers, trace: cosmosException.Trace, error: cosmosException.Error, innerException: cosmosException.InnerException), requestCharge: queryResponseCore.RequestCharge, activityId: queryResponseCore.ActivityId); return(queryResponseCore); }
public static QueryResponseCore CreateFromException(Exception exception) { QueryResponseCore queryResponseCore; if (exception is CosmosException cosmosException) { queryResponseCore = CreateFromCosmosException(cosmosException); } else if (exception is Microsoft.Azure.Documents.DocumentClientException documentClientException) { queryResponseCore = CreateFromDocumentClientException(documentClientException); } else if (exception is QueryException queryException) { CosmosException convertedException = queryException.Accept(QueryExceptionConverter.Singleton); queryResponseCore = CreateFromCosmosException(convertedException); } else if (exception is ExceptionWithStackTraceException exceptionWithStackTrace) { queryResponseCore = QueryResponseFactory.CreateFromExceptionWithStackTrace(exceptionWithStackTrace); } else { if (exception.InnerException != null) { // retry with the inner exception queryResponseCore = QueryResponseFactory.CreateFromException(exception.InnerException); } else { CosmosException unkownCosmosException = CosmosExceptionFactory.CreateInternalServerErrorException( headers: new Headers() { SubStatusCode = SubStatusCodes.PartitionKeyRangeGone, ActivityId = QueryResponseCore.EmptyGuidString }, message: exception.Message, stackTrace: exception.StackTrace, trace: NoOpTrace.Singleton, innerException: exception); // Unknown exception type should become a 500 queryResponseCore = QueryResponseCore.CreateFailure( statusCode: System.Net.HttpStatusCode.InternalServerError, subStatusCodes: null, cosmosException: unkownCosmosException, requestCharge: 0, activityId: QueryResponseCore.EmptyGuidString); } } return(queryResponseCore); }
public static QueryResponseCore CreateFromException(Exception exception) { QueryResponseCore queryResponseCore; if (exception is CosmosException cosmosException) { queryResponseCore = CreateFromCosmosException(cosmosException); } else if (exception is Microsoft.Azure.Documents.DocumentClientException documentClientException) { queryResponseCore = CreateFromDocumentClientException(documentClientException); } else if (exception is QueryException queryException) { CosmosException convertedException = queryException.Accept(QueryExceptionConverter.Singleton); queryResponseCore = CreateFromCosmosException(convertedException); } else if (exception is ExceptionWithStackTraceException exceptionWithStackTrace) { QueryResponseCore innerExceptionResponse = QueryResponseFactory.CreateFromException(exceptionWithStackTrace.InnerException); queryResponseCore = QueryResponseCore.CreateFailure( statusCode: innerExceptionResponse.StatusCode, subStatusCodes: innerExceptionResponse.SubStatusCode, errorMessage: exceptionWithStackTrace.ToString(), requestCharge: innerExceptionResponse.RequestCharge, activityId: innerExceptionResponse.ActivityId, diagnostics: innerExceptionResponse.Diagnostics); } else { if (exception.InnerException != null) { // retry with the inner exception queryResponseCore = QueryResponseFactory.CreateFromException(exception.InnerException); } else { // Unknown exception type should become a 500 queryResponseCore = QueryResponseCore.CreateFailure( statusCode: System.Net.HttpStatusCode.InternalServerError, subStatusCodes: null, errorMessage: exception?.ToString(), requestCharge: 0, activityId: QueryResponseCore.EmptyGuidString, diagnostics: QueryResponseCore.EmptyDiagnostics); } } return(queryResponseCore); }