【问题标题】:Repeating exception handling重复异常处理
【发布时间】:2014-03-12 22:03:14
【问题描述】:

我有一个关于重复异常处理的问题...

例如:Webmethods 有 try-catch 块,而 try 块内有执行代码。这个 try-catch 块对于每个 webmethod 都是相同的。

有没有可能让它更容易、更易于维护,而不需要重复相同的代码? 我知道方面,但是还有其他解决方案吗?

代码语言是 C#,但我喜欢通用解决方案。

感谢您的回答。

【问题讨论】:

  • 异常处理的通用解决方案通常是一个非常糟糕的主意。如果您对每个WebMethod 都需要完全相同的try/catch 块,那么我倾向于认为您的设计在更大范围内有问题。您介意只举一个您想重复的处理示例吗?

标签: c# web-services exception-handling


【解决方案1】:

利用函数式编程原理,你可以通过某种方式传递你想要执行的动作或方法。

在 C# 中,您可以使用这样的方法来标准化您的代码:

public void HandleExceptions(Action action)
{
    try
    {
        action();
    }
    catch (ExceptionA exa)
    {

    }
    catch (ExceptionB exb)
    {

    }
    finally
    {

    }
}

然后这样称呼它:

HandleExceptions(() =>
{
    //insert code to be handled by try/catch structure
    Method1();
});
HandleExceptions(() =>
{
    Method2();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    相关资源
    最近更新 更多