【问题标题】:Set variable based on whether an exception is thrown or not in .NET application根据 .NET 应用程序中是否引发异常来设置变量
【发布时间】:2020-10-09 14:06:49
【问题描述】:

我的应用程序使用的依赖包中有这个ConsumerBuilder

using var consumer = new ConsumerBuilder<byte[], byte[]>(config).SetErrorHandler(
    (consumeException, error) => throw new Exception($"KafkaTask Kafka error, Fatal:{error.IsFatal}, " +
        $"Code:{error.Code}, {error.IsBrokerError}, " +
        $"IsLocalError:{error.IsLocalError}, Reason:{error.Reason}")).Build();

我想添加一些东西,如果抛出异常,则将变量设置为 true。我该怎么做?

【问题讨论】:

  • 通过添加 try catch 块。
  • 当然,在抛出异常之前设置变量。您需要将代码括在大括号 ({ variable = true; throw new ...; }) 中。请注意,抛出Exception 被认为是不好的做法;您应该使用更合适的派生类型。

标签: c# .net variables


【解决方案1】:

您可以将多行添加到 lambda 表达式中,方法是将它们括在花括号中:

var exceptionWasThrown = false;

using var consumer = new ConsumerBuilder<byte[], byte[]>(config).SetErrorHandler(
    (consumeException, error) => 
    {
        exceptionWasThrown = true;

        throw new Exception($"KafkaTask Kafka error, Fatal:{error.IsFatal}, " +
            $"Code:{error.Code}, {error.IsBrokerError}, " +
            $"IsLocalError:{error.IsLocalError}, Reason:{error.Reason}")
    }).Build();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2016-12-22
    • 2020-12-14
    • 2014-10-13
    • 1970-01-01
    • 2011-05-26
    相关资源
    最近更新 更多