-1

我对一些代码有疑问:

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

“Examples.NET.SampleDocumentData”的类型初始化程序引发了异常。

如何解决这个问题?

4

2 回答 2

0

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

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

于 2015-04-09T07:34:43.493 回答
0

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

于 2015-04-09T04:48:32.643 回答