C# 使用try-catch删除这个对局部变量-sonarqube-的无用赋值

C# 使用try-catch删除这个对局部变量-sonarqube-的无用赋值,c#,sonarqube,C#,Sonarqube,在以下代码中,sonarqube对问题中提到的错误进行了投诉: public async static Task<T> StartReadAsync<T>(Func<Task<T>> func) { T result = default; using (await _lock.ReadLockAsync(CancellationToken.None)) { _lo

在以下代码中,sonarqube对问题中提到的错误进行了投诉:

   public async static Task<T> StartReadAsync<T>(Func<Task<T>> func)
    {
        T result = default;
        using (await _lock.ReadLockAsync(CancellationToken.None))
        {
            _logger.Info("read lock acquired.");
            try
            {
                result = await func();
            }
            catch (Exception ex)
            {
                _logger.Error($"exception occured while read: {ex}");
            }
        }
        _logger.Info("read lock released.");
        return result;
    }
public async静态任务StartReadAsync(Func Func)
{
T结果=默认值;
使用(wait_lock.ReadLockAsync(CancellationToken.None))
{
_logger.Info(“读取已获取的锁”);
尝试
{
结果=等待函数();
}
捕获(例外情况除外)
{
_logger.Error($“读取时发生异常:{ex}”);
}
}
_logger.Info(“读取已释放的锁”);
返回结果;
}

我如何重新编写此代码以解决sonarqube的投诉?

您的捕获块是否重新捕获?你能提供一个例子而不是仅仅注释位吗?@Jon我已经提供了确切的代码。你是否尝试过根本没有
结果
,而是执行
返回等待函数()
/
返回默认值(T)
?我可以假设它在抱怨
T结果=默认值func()。如果没有初始赋值,变量不会在
return
语句中明确赋值。您的catch块是否会重新调用?你能提供一个例子而不是仅仅注释位吗?@Jon我已经提供了确切的代码。你是否尝试过根本没有
结果
,而是执行
返回等待函数()
/
返回默认值(T)
?我可以假设它在抱怨
T结果=默认值func()。如果没有初始赋值,变量不会在
return
语句中明确赋值。