Kusto.Data 异常

适用于:✅Azure 数据资源管理器

.NET SDK 中定义的所有异常都实现接口 Kusto.Cloud.Platform.Utils.ICloudPlatformException。 异常在 Kusto.Cloud.Platform 程序集中定义,通过 Microsoft.Azure.Kusto.Cloud.Platform NuGet 包分发。 你可以编写异常处理程序,以基于以下 get 属性检查和处理异常:

  • int FailureCode { get; }:返回等效的 HTTP 状态代码。

  • string FailureSubCode { get; }:返回等效的 HTTP 原因短语。

  • bool IsPermanent { get; }:返回异常的永久性。 永久性异常表示调用方不应重试,因为不太可能成功,例如,因输入错误而导致的异常。

使用 Microsoft.Azure.Kusto.Data NuGet 包时从 Kusto.Data 引发的异常会继承 Kusto.Data.Exceptions.KustoException 类。 所有异常都以 Kusto.Data.Exceptions 开头。

Kusto.Data 异常类别

根据根本原因,异常可能会继承以下错误类型之一:

  • KustoRequestException:指示请求本身或生成它的环境中的问题。 此异常等效于 HTTP 状态代码 4xx,不是服务错误。 有关错误列表,请参阅请求异常

  • KustoServiceException:指示服务端在处理请求时出现问题。 此异常等效于 HTTP 状态代码 5xx。 有关错误列表,请参阅服务异常

  • KustoClientException:指示向服务发送请求时出现客户端问题。 具体而言,此异常通知调用方服务本身未收到请求。 有关错误列表,请参阅客户端异常

客户端异常

所有客户端异常都有失败代码 0、无失败子代码,其永久性为 False(原因列中注明的除外)。 客户端异常包含以下异常类别:

异常名称 原因
CslInvalidQueryException 查询因自身的原因而失败。 有关错误列表,请参阅客户端查询异常
KustoClientAuthenticationException 客户端身份验证流失败。 有关错误列表,请参阅身份验证异常
KustoClientInvalidConnectionStringException Kusto 连接字符串生成器使用了冲突的或不充分的属性进行初始化。
KustoClientNameResolutionFailureException Kusto 客户端无法解析服务名称。
KustoClientNotSupportedException Kusto .NET Core 客户端不支持某项功能。
KustoClientPrincipalIdentityMustBeNullException 要求 Kusto 客户端传输一个 PrincipalIdentity 不为 null 的 ClientRequestProperties 对象。
KustoClientTemporaryStorageRetrievalException 检索临时存储失败。
KustoClientTimeoutAwaitingPendingOperationException 指示等待挂起操作完成时出现超时。
KustoClientTimeoutException 由于客户端超时,客户端无法发送或完成请求。

客户端查询异常

所有客户端查询异常都有失败代码 0、无失败子代码,其永久性为 False(原因列中注明的除外)。

异常名称 原因
CslBinaryOperationHasIncompatibleTypesException 二元运算符组合了两个类型不兼容的表达式。
CslExpectingBooleanLambdaException 分析程序需要布尔 lambda 表达式。
CslExpectingConstantExpressionException 指示一个表达式失败,该表达式应表示常量。
CslExpectingConstantNodeType 转换查询操作已中止,因为表达式节点类型不会生成常量值。
CslExpectingScalarExpressionException 指示因分析程序需要标量表达式而导致的失败。
CslExpectingScalarProjectionLambdaExpressionException 指示当表达式应该是一个执行标量投影的 lambda 表达式时出现的失败。
CslExpectingTableExpressionException 指示当分析程序需要表表达式时出现的失败。
CslExpressionHasUnsupportedNodeTypeException System.Linq.Expressions.Expression 有一个不受支持的节点类型。
CslInternalQueryTranslationErrorException 由于内部故障,转换查询操作已中止。
CslNotSupportedException 转换查询操作已中止,因为它包含不受支持的方法。
CslUnsupportedMethodArityInExpressionException 转换查询操作已中止,因为不支持方法参数数量。
CslUnsupportedTypeInNewExpressionException 转换查询操作已中止,因为不支持运算符 new 的类型参数。

身份验证异常

所有身份验证异常都有失败代码 0、无失败子代码,其永久性为 False(原因列中注明的除外)。

异常名称 原因
KustoClientApplicationAuthenticationException 客户端 Microsoft Entra 应用程序身份验证失败。
永久性:True
KustoClientApplicationCertificateNotFoundException 找不到应用程序身份验证所需的证书。
永久性:True
KustoClientLocalSecretAuthenticationAccessDisabledException 当尝试通过连接字符串来请求基于本地机密的身份验证失败且 KustoConnectionStringBuilder.PreventAccessToLocalSecretsViaKeywords 为 true 时。
失败代码:400
失败子代码:LocalSecretAuthenticationAccessDisabled
永久性:True
KustoClientUserAuthenticationException 客户端 Microsoft Entra 用户身份验证失败。
永久性:True
KustoClientUserInteractiveModeNotValidException 客户端未能向 Microsoft Entra ID 进行身份验证。
永久性:True

请求异常

所有请求异常都有失败代码 0、无失败子代码,其永久性为 False(原因列中注明的除外)。

异常名称 原因
EntityNameIsNotValidException 指示实体名称无效。
失败代码:400
失败子代码:BadRequest_EntityNameIsNotValid
永久性:True
ClusterSuspendedException 由于服务处于挂起状态,因此拒绝带有 request_execute_only_if_running 标志的请求。
失败代码:412
失败子代码:PreconditionFailed
永久性:True
KustoBadRequestException Kusto 服务被发送了错误请求。 有关错误列表,请参阅错误请求异常
失败代码:400
失败子代码:General_BadRequest
永久性:True
KustoConflictException Kusto 服务被发送了一项请求,由于服务状态的缘故,该请求无法执行。
失败代码:409
失败子代码:冲突
永久性:True
KustoFailedChangeServiceStateException CM 无法更改服务状态。
KustoRequestDeniedException Kusto 服务发送的请求的安全权限不足,无法执行。
失败代码:403
失败子代码:已禁用
永久性:True
KustoRequestPayloadTooLargeException 有效负载太大。 例如,当 Kusto 被告知要处理的数据超过单个批中允许的数据时,会出现此异常。
失败代码:413
失败子代码:有效负载太大
永久性:True

错误请求异常

所有错误请求异常都有失败代码 0、无失败子代码,其永久性为 False(原因列中注明的除外)。

异常名称 原因
DatabaseNotFoundException 找不到数据库。
失败代码:400
失败子代码:BadRequest_DatabaseNotExist
永久性:True
DuplicateMappingException 引入属性包含错误的引入映射和引入映射引用。
失败代码:400
失败子代码:BadRequest_DuplicateMapping
永久性:True
EntityNotFoundInContainerException 找不到实体。
失败代码:400
失败子代码:General_BadRequest
永久性:True
EntityTypeIsNotValidException 不支持此实体类型。
失败代码:400
失败子代码:General_BadRequest
永久性:True
FormatNotSupportedException 不支持提供的格式。
失败代码:400
失败子代码:BadRequest_FormatNotSupported
永久性:True
IngestionPropertyNotSupportedInThisContextException 引入属性在此上下文中不受支持。
失败代码:400
失败子代码:BadRequest_IngestionPropertyNotSupportedInThisContext
永久性:True
MalformedIngestionPropertyException 引入属性的格式不正确。
失败代码:400
失败子代码:BadRequest_MalformedIngestionProperty
永久性:True
MappingNotFoundException 找不到映射引用。
失败代码:400
失败子代码:BadRequest_MappingReferenceWasNotFound
永久性:True
MappingNotValidException 引入属性包含无效的引入映射或引入映射引用。
失败代码:400
失败子代码:BadRequest_InvalidMapping
永久性:True
QueryCslTreeExceedsDepthsLimitsException csl 树超出深度限制。
失败代码:400
失败子代码:General_BadRequest
永久性:True
RelopSemanticException 在 relop 编译阶段发生的语义错误。
失败代码:400
失败子代码:General_BadRequest
永久性:True
SemanticException 指示语义错误。
失败代码:400
失败子代码:General_BadRequest
永久性:True
SyntaxException 指示语法错误。
失败代码:400
失败子代码:BadRequest_SyntaxError
永久性:True
InappropriateNullLiteralException null 文本不能出现在它出现的上下文中。
失败代码:400
失败子代码:BadRequest_SyntaxError
永久性:True
InvalidLiteralFormatException 由于格式不正确,分析文本失败。
失败代码:400
失败子代码:BadRequest_SyntaxError
永久性:True
TableNotFoundException 找不到表。
失败代码:400
失败子代码:BadRequest_TableNotExist
永久性:True

服务异常

所有服务异常都有失败代码 0、无失败子代码,其永久性为 False(原因列中注明的除外)。

异常名称 原因
KustoServicePartialQueryFailureException 查询执行已成功启动,但在完成之前失败。
WeakConsistencyEntityNotFoundException 指示未能在弱一致性模式下定位实体。
KustoDataStreamException 在 Kusto 数据流中携带错误信息的泛型异常。
KustoRequestThrottledException 由于限制,请求被拒绝。
失败代码:429
失败子代码:TooManyRequests
永久性:False
KustoServicePartialQueryFailureIllFormattedDataException 在 Kusto 数据流中携带错误信息,指示数据的格式错误。
失败代码:400
失败子代码:IllFormattedData
永久性:True
KustoServicePartialQueryFailureLimitsExceededException 在 Kusto 数据流中携带错误信息,指示已超出限制。
失败代码:400
失败子代码:LimitsExceeded
永久性:True
KustoServicePartialQueryFailureLowMemoryConditionException 在 Kusto 数据流中携带错误信息,指示内存不足的条件。
失败代码:400
失败子代码:LowMemoryCondition
永久性:True
KustoServiceTimeoutException 当请求执行在服务端超时时引发。
失败代码:504
失败子代码:RequestExecutionTimeout
永久性:False