我遇到一些代码问题:
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;的类型初始值设定项抛出异常。
如何解决这个问题?
答案 0 :(得分:0)
静态构造函数中发生的任何异常都将被TypeInitializationException包装。因此,只需在静态构造函数中修复抛出异常,就不会发生TypeInitializationException。
答案 1 :(得分:0)
你问的问题不正确。正确的问题是:为什么静态块抛出异常(何时不应该)?
您正在修改Carrot2中包含一组静态示例文档的示例。将读取这些文档的整个块移动到正常代码(不是类初始化程序)并在那里使用它。如果它抛出异常(它不会传播包装为类init异常),请提供完整异常的堆栈跟踪和消息 - 这将为您提供代码无法按预期工作的线索。