编程语言
首页 > 编程语言> > c# – 在方法的开头到结尾处错误处理的优缺点是什么

c# – 在方法的开头到结尾处错误处理的优缺点是什么

作者:互联网

在我的程序员的经验中,我尽可能地混合错误处理……我创造了我的个人风格.

但是,我想听听你认为在开始时和方法结束时错误处理的优缺点.

处理开头:

public String GenerateSomeStringData(String data, int value)
{
    if (data == null)
        throw new ArgumentNullException("data");

    if (value <= 0)
        throw new ArgumentException("value must be greater than zero");

    int dataValue;
    if (!int.TryParse(data, out dataValue))
        throw new InvalidOperationException("data does not contain an integer");

    return dataValue * 4 + value / 12;
}

最后的处理:(同样的例子)

public String GenerateSomeStringData(String data, int value)
{
    if (data != null)
    {
        if (value > 0) 
        {
            int dataValue;
            if (int.TryParse(data, out dataValue))
            {
                return dataValue * 4 + value / 12;
            }
            else 
                throw new InvalidOperationException("data does not contain an integer");
        }
        else 
            throw new ArgumentException("value must be greater than zero");
    }
    else 
        throw new ArgumentNullException("data");
}

在决定如何处理此问题时,您使用什么标准?可读性,可维护性,简洁性?

解决方法:

对于执行方法,输入的有效性应为precondition – 因此我会(并且确实)首先执行错误处理.

这具有以下优点:

>解析人类更容易:
首先验证先决条件,然后
执行逻辑(通常
导致一些后置条件)
>明确分离关注点
错误处理和执行逻辑
在您的方法中:验证逻辑不会在执行逻辑中“撒入”

如评论中所述,您必须区分违反前提条件的无效输入和触发错误条件(例如抛出异常)和构成边缘条件的有效输入(即需要一些特殊逻辑来处理).后面的例子我将在你的方法的执行逻辑开始时断言前提条件后单独处理.

标签:c,error-handling,paradigms
来源: https://codeday.me/bug/20190713/1444776.html