做出返回传播的最佳方法

时间:2015-04-21 11:54:56

标签: c# return execution

我找不到答案,可能是因为我没有以适当的方式提出这个问题。

所以,我正在编写一个类内部的方法,并且在某些时候我希望它测试字符串的格式。如果它不正确,我希望它向用户显示一条消息,并停止执行,以便用户可以修复该错误。我有这个:

                if (Is not properly formated)
                {
                    //get error information

                    //show error box with the formation error line
                    MessageBox.Show(String.Format(
                        "Error message{0}",
                        errorLine.ToString()), "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    return; 
                }

当然,这将停止执行此方法,但我想停止执行main方法(按钮单击方法)。

在C#中执行此操作的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

你应该在C#中使用异常,例如

private void Calculate(string[] lines)
{
    try
    {
        lines.ForEach(Validate);

        // process lines
    }
    catch(InvalidArgumentException ex)
    {
        MessageBox.Show(...);
    }   
}

private void Validate(string s)
{
    if(s.IsNullOrEmpty)
        throw new InvalidArgumentException(/* some details here*/);
}

答案 1 :(得分:1)

如果值有效,您可以编写一个返回true的验证方法,并可选择返回string告诉错误:

private bool Validate(string s, out string error)
{
    if (string.IsNullOrEmpty(s))
    {
        error = "s is null";
        return false;
    }
    else
    {
        error = null;
        return true;
    }
}

然后叫它:

string error;
if (!Validate(null, out error))
{
    MessageBox.Show(error);

    // Do something
}

如果您要构建可能错误列表,则可以使用string代替enum