标准化验证和错误检查C#

时间:2015-12-05 14:43:35

标签: c# validation logging input error-handling

我目前正在开发一个项目,它处理许多类型的输入,这些输入具有像0到1之间的双重约束。我正在考虑通过使用我将调用验证的类以标准化方式验证此输入输入,如果输入错误,会将结果抛出到日志文件或抛出异常。

tl; dr:有一种很好的方法可以在使用日志文件的程序中标准化验证。

示例:

        public void AddTimes(double time1, double time2)
        {
            if (time1 < 0)
            {
                ErrorManager.Validation_MustBeNonNegative(ErrorManager.GetName(new { time1 }), time1.ToString());
            }
            else if (time2 <= 0)
            {
                ErrorManager.Validation_MustBeNonNegativeNonZero(ErrorManager.GetName(new { time1 }), time2.ToString());
            }
        }

1 个答案:

答案 0 :(得分:0)

您可以使用log4net从自定义方法执行日志记录。配置和记录到log4net是关于SO的详细记录主题,因此您应该优化问题并再次搜索。

要验证您的值,您需要有一种表达有效范围的方法。 Microsoft在其框架中包含一些范围检查功能,但您可以轻松地自行推送:

public static void AssertTimesAreValid(double time1, double time2)
{
                if (time1 < 0)
        {
            ErrorManager.Validation_MustBeNonNegative(ErrorManager.GetName(new { time1 }), time1.ToString());
            throw new ArgumentException("Times are not far enough apart.");
        }
        else if (time2 <= 0)
        {
            ErrorManager.Validation_MustBeNonNegativeNonZero(ErrorManager.GetName(new { time1 }), time2.ToString());
            throw new ArgumentException("Times are not far enough apart.");
        }
}

public void AddTimes(double time1, double time2)
{
    AssertTimesAreValid(time1, time2)

    // Do your work now
}

您的ErrorManager需要进行日志记录。