方法中使用的变量名和值的错误日志记录

本文关键字:错误 日志 记录 变量名 方法 | 更新日期: 2023-09-27 18:05:11

是否有任何方法可以记录方法中使用的所有变量和值?我想看到日志信息,就像我在方法ErrorWriter中展示的那样。我不想用ErrorWriter(names, values)。有人能提出解决办法吗?

    static int number3;
    static void Main(string[] args)
    {
        number3 = 0;
        Method(1, 2);
    }
    static void Method(int number, int number2)
    {
        int number4;
        try
        {
            number4 = number / number2 / number3;
        }
        catch
        {
            ErrorWriter();
        }
    }
    private static void ErroWriter()
    {
        /// number = 1
        /// number2 = 2
        /// number3 = 0
    }

我需要关于使用的变量值的信息。为例。如果我有一行,number4=number/number2/number3。我怎么知道哪个变量的值是0?2号还是3号?这就是为什么我需要精确的值。我不想为每个方法硬编码参数。我需要动态解决方案

方法中使用的变量名和值的错误日志记录

我会使用某种方面编程/拦截。你所采用的任何其他方法最终都可能是低级的或复杂的,而不应该在你正在实现的实际类中实现。

错误处理不一定是你的类的职责之一,所以它可以委托给一个方面。

一个可能的解决方案是使用某种类型的IoC框架(如Unity和Ninject,还有许多其他的),并设置你的类被错误处理拦截器拦截,它将捕获异常并记录这些情况下的参数。

这篇文章有一个使用Unity的例子,可以为你指出正确的解决方案

正如其他人所说,使用标准的错误处理例程可能会比您在这里尝试完成的要好得多。

无论如何,您的ErrorWriter方法可以接受int[]类型的参数。

chatch
{
    ErrorWriter(new int[3] { number1, number2, number3 });
}
(...)
private static void ErrorWriter(int[] numbers)
{
    int index = 1;
    foreach(var i in numbers)
    {
        Console.WriteLine("number" + index.ToString() + " = " + i.ToString());
    }
}

在这种情况下,您似乎想要避免try/catch。

检查方法,如果你的输入是有效的(即。如果验证失败,抛出异常。

如果您想要的只是能够确定其中一个变量是否为零(或验证失败),则在检查中抛出Exception,如下所示:

private void Method(int number, int number2) {
   if (number3 == 0) throw new Exception("number3 is zero, resulting in division by zero");
   if (number2 + number == 0) throw new Exception("number2 + number is zero");
   number 4 = (number2 + number) / number3
}

不需要try/catch。异常会冒出来。在使用任何方法之前,总是检查你的输入(实例变量和参数)!