gpt4 book ai didi

c# - 返回值的方法不能传递给异常处理程序

转载 作者:行者123 更新时间:2023-12-02 19:36:46 25 4
gpt4 key购买 nike

我在方法中集中处理异常 (ExecuteAction(Action action))。当该方法返回值时将操作传递给该方法时,我遇到了问题。

在以下代码中我收到此错误:

由于“System.Action”返回 void,因此 return 关键字后面不能跟对象表达式

如何解决这个问题?

public decimal CalculateInstalment(decimal amount, int months)
{
this.ExecutAction(() =>
{
var result = amount / months;
return Math.Round(result, 2);
});
}

protected bool ExecutAction(Action action)
{
try
{
action();
return true;
}
catch (NullReferenceException e) { _MessageService.ShowErrorMessage(e); return false; ; }
catch (System.Data.SqlTypes.SqlTypeException e) { _MessageService.ShowErrorMessage(e); return false; }
catch (System.Data.SqlClient.SqlException e) { _MessageService.ShowErrorMessage(e); return false; }
catch (System.Exception e) { _MessageService.ShowErrorMessage(e); return false; };
}

最佳答案

正如其他人所说,Action 类型不返回值,但您可以引用外部变量。如果您想获取该值,请考虑这样的设置:

public decimal CalculateInstalment(decimal amount, int months)
{
var result = 0.0;
this.ExecutAction(() =>
{
result = Math.Round((amount / months), 2);
});

return result;
}

protected bool ExecutAction(Action action)
{
try
{
action();
return true;
}
catch (NullReferenceException e) { _MessageService.ShowErrorMessage(e); return false; ; }
catch (System.Data.SqlTypes.SqlTypeException e) { _MessageService.ShowErrorMessage(e); return false; }
catch (System.Data.SqlClient.SqlException e) { _MessageService.ShowErrorMessage(e); return false; }
catch (System.Exception e) { _MessageService.ShowErrorMessage(e); return false; };
}

关于c# - 返回值的方法不能传递给异常处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24314743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com