gpt4 book ai didi

c# - 我可以将我的异常代码移动到处理函数吗?所以我不必重复相同的代码

转载 作者:太空狗 更新时间:2023-10-29 22:53:53 24 4
gpt4 key购买 nike

我目前是这样处理异常的:

try {

}
catch (ServiceException ex) {
ModelState.Merge(ex.Errors);
}
catch (Exception e) {
Trace.Write(e);
ModelState.AddModelError("", "Database access error: " + e.Message);
}

这行得通,但它是我重复多次的相同代码。我正在寻找的是关于如何将其移至外部函数的一些建议。我不一定需要将 try block 移到那里,但至少需要移动其他代码。

可能是传递了 Exception 和 ModelState(作为引用)的函数。任何人都可以建议一种我可以编写此功能的简洁方法。我在这里问是因为几乎总是有人想出一个我从未想过的解决方案。谢谢萨曼莎。

最佳答案

您可以创建一个接受 Action 的方法,并在 try/catch block 中调用它:

private void RunAndHandleExceptions(Action action)
{
try
{
action.Invoke();
}
catch (ServiceException ex)
{
ModelState.Merge(ex.Errors);
}
catch (Exception e)
{
Trace.Write(e);
ModelState.AddModelError("", "Database access error: " + e.Message);
}
}

然后这样调用它:

RunAndHandleExceptions(new Action(() =>
{
//Do some computing
}));

编辑:带参数(例如,可以在控制台程序中运行):

private static void ParameterizedTask()
{
Task.Factory.StartNew(new Action<object>((y) =>
{
Console.WriteLine(y);
}), 5);
Thread.Sleep(1500);
}
//OUTPUT: 5

有关更多信息,您可以查看 this线程。

关于c# - 我可以将我的异常代码移动到处理函数吗?所以我不必重复相同的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8562572/

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