AWS Translate:从 DetectedLanguageLowConfidenceException 获取 DetectedLanguageCode

AWS Translate: Get DetectedLanguageCode from DetectedLanguageLowConfidenceException

我正在尝试使用 AWS Translate。我希望 AWS Translate 在我发送 TranslateTextAsync 请求时自动检测源语言。显然,可能存在 DetectedLanguageLowConfidenceException,我想通过从异常中获取 DetectedLanguageCode 来处理它并重试翻译。我无法让这个异常发生,所以我不知道那个响应异常的结构。

对于Java SDK,我发现有一个"getDetectedLanguageCode"函数,但是.NET SDK中没有这个。我正在使用 AWSSDK.Translate v3.3.101.12.

如何从 DetectedLanguageLowConfidenceException 中获取语言代码?

我联系了 AWS Support,他们联系了他们的 AWS Translate 团队。他们写道

C#/.Net does not support member variables in exceptions the way Java does. However, supplementary information about exceptions is stored in the Data dictionary of the exception

他们还提到 AWS Translate 在抛出 DetectedLanguageLowConfidenceException 之前通常会使用低置信度猜测,所以看起来我们真的不必担心它。

我还是去实现了异常处理,并有以下代码来提取检测到的语言代码数据。此代码虽然未经测试:

catch (DetectedLanguageLowConfidenceException ex)
{
    var dictionary = ex.Data as Dictionary<object, object>;
    var detectedLanguageCode = dictionary?["DetectedLanguageCode"] as string;

    // Retry here with the detected low confidence language code.
}