如何在此代码中修复System.TypeInitializationException

时间:2015-04-09 00:46:32

标签: c# xml carrot2

我遇到一些代码问题:

using System;
using System.Collections.Generic;
using Org.Carrot2.Core;
using System.Xml;
using System.Xml.Linq;

namespace Examples.NET
{
internal static class SampleDocumentData
{
    public static readonly IList<Document> DataMiningDocuments = new List<Document>();
    static SampleDocumentData()
    {
        XDocument doc = XDocument.Load("hadits.xml");
        Console.Write("Masukan kata kunci pencarian: ");
        string keyword = Console.ReadLine();

        //Navigate through all IsiNode
        foreach (var isiElement in doc.Root.Elements())
        {
            if (isiElement.Value.Contains(keyword))
            {
                string[] xdata={isiElement.Value};
                for (int i = 0; i < xdata.Length; i++)
                {
                    DataMiningDocuments.Add(new Document(xdata[i], xdata[i], ""));
                }
            }
        }
        Console.ReadLine();

    }
}

}

产生以下错误:

  

System.TypeInitializationException

     

&#39; Examples.NET.SampleDocumentData&#39;的类型初始值设定项抛出异常。

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

静态构造函数中发生的任何异常都将被TypeInitializationException包装。因此,只需在静态构造函数中修复抛出异常,就不会发生TypeInitializationException。

答案 1 :(得分:0)

你问的问题不正确。正确的问题是:为什么静态块抛出异常(何时不应该)?

您正在修改Carrot2中包含一组静态示例文档的示例。将读取这些文档的整个块移动到正常代码(不是类初始化程序)并在那里使用它。如果它抛出异常(它不会传播包装为类init异常),请提供完整异常的堆栈跟踪和消息 - 这将为您提供代码无法按预期工作的线索。