过滤C#的调试输出

时间:2012-03-01 10:45:00

标签: c# debugging filtering

是否可以从C#中的调试输出中过滤出不同类型的异常?

我想过滤掉'System.FormatException',因为我知道它会发生,并且它会对我的输出进行垃圾监督。我正在扫描超过20,000行的文本文件,其中几乎四分之一是错误的,但我不想在输出中使用'System.FormatException'5000次...

下面是代码,你可以看到,如果它不是数字,它就不会是double.parse,所以它会捕获错误。

if (!(dataline.EndsWith(";0") || intCounter == 0))
{
    try
    {
        natMB = double.Parse(splitline[8], NumberStyles.AllowDecimalPoint, NumberFormatInfo.InvariantInfo);
    }
    catch
    {
        natMB = 0;
    }

    double intMB;
    try
    {
        intMB = double.Parse(splitline[9], NumberStyles.AllowDecimalPoint, NumberFormatInfo.InvariantInfo);
    }
    catch
    {
        intMB = 0;

3 个答案:

答案 0 :(得分:7)

如果您想忽略异常,可以将以下try / catch放在上面:

try
{
  // Insert your code here
}
catch(System.FormatException)
{

}

查看您的代码我建议您使用

double d = 0;
Boolean success = double.TryParse(splitline[8], out d);

if(success)
  Console.WriteLine("Conversion successful!");
else
  Console.WriteLine("Damnit.");

代替。这将返回一个关于转换是否正常的布尔值,并且还将解析后的double存储在您传递函数的变量中。

答案 1 :(得分:2)

我发现内置的.NET日志记录机制令人沮丧。我会看一下类似log4netNLog的内容,它们可以让您对记录的级别和命名空间进行大量控制。

将这些与Log2Console结合使用,以获得实时记录跟踪。

答案 2 :(得分:2)

如果要在调试时忽略此异常,可以禁用异常捕获。

在菜单中,转到:调试例外... (在我的Visual Studio中,热键是 Ctrl + D E )。

然后点击“查找...”,然后搜索您的例外情况。找到它后,请确保未选中任何复选框。现在应该忽略它。