バリデーターによってスローされた例外をキャプチャする必要がありますが、その原因がわかりません。これが私が試したコードです:
internal static class XMLValidator
{
public static void Validate(XElement elem)
{
string xsdMarkup;
using(var file = new StreamReader(Constants.Xsd))
{
xsdMarkup = file.ReadToEnd();
}
XmlSchemaSet schema = new XmlSchemaSet();
bool valid = true;
schema.Add(XmlSchema.Read(XElement.Parse(xsdMarkup).CreateReader(), (o, e) => { }));
new XDocument(elem).Validate(schema, (o, e) => { valid = false; exception = e; });
if (valid == false)
{
throw exception;
}
valid = true;
}
}
「名前の例外は現在のコンテキストに存在しません」というエラーが表示されます。問題は、例外にデータ型を指定していないことだと確信しています。ただし、どのタイプを使用すればよいかわかりません。
例外の前にvarを追加しようとしましたが、ifステートメント内で認識されず、もちろんvarをメソッド外で宣言することはできません。
次に、免除を文字列としてグローバルに宣言し、次のようにeに設定してみました。
exception = e.ToString();
しかし、ifステートメントの中にそれを投げることはできません。
どうすればこれを行うことができますか?