正在筛选C#的调试输出

本文关键字:调试 输出 筛选 | 更新日期: 2023-09-27 18:26:10

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

我想过滤掉"System.FormatException",因为我知道它会发生,而且它对我的输出进行了垃圾监督。我正在扫描一个超过20000行的文本文件,其中几乎四分之一是错误的,但我不希望在我的输出中出现5000次"System.FormatException"。。。

代码如下所示,您可以看到,如果它不是一个数字,它将不会加倍.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;

正在筛选C#的调试输出

如果你想忽略一个异常,你可以用下面的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存储在传递函数的变量中。

我发现内置的.NET日志记录机制对这种类型来说很令人沮丧。我会看看log4net或NLog之类的东西,它们可以让你对记录的级别和名称空间进行大量控制。

将这些与Log2Console结合使用,可以进行实时日志记录跟踪。

如果您想在调试时忽略此异常,可以禁用对该异常的捕获。

在菜单中,转到:调试→ 异常(在我的Visual Studio中,热键是Ctrl+D2

然后点击"查找…",搜索您的异常。找到它时,请确保没有选中任何复选框。它现在应该忽略它。