方法中使用的变量名和值的错误日志记录
本文关键字:错误 日志 记录 变量名 方法 | 更新日期: 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。异常会冒出来。在使用任何方法之前,总是检查你的输入(实例变量和参数)!