Tôi có đoạn mã sau vào một trong các trang web dự án của chúng tôi:Dường như không thể xử lý XMLException?
XmlDocument xDoc = new XmlDocument();
xDoc.Load(File.FullName);
//work through each print batch in this queue file
try
{
XmlNodeList nodeList = xDoc.SelectNodes("Reports/PrintBatch");
foreach (XmlNode printBatch in nodeList)//xDoc.SelectNodes("Reports/PrintBatch"))
{
PrintBatch batch = new PrintBatch();
batch.LoadBatch(printBatch, File.Extension);
this.AddBatch(batch);
}
}
catch (XmlException e)
{
//this report had an error loading!
Console.WriteLine(e.Message);
}
Về cơ bản nó có một tập tin batch xml và tải nó lên như một đối tượng, sẵn sàng để được xử lý.
Nó hoạt động tốt, cho đến gần đây khi một trong các tệp XML được tìm thấy chứa một ký tự rỗng (không hợp lệ trong XML).
Khi nó cố gắng để xử lý này "dudd" tập tin, chúng tôi nhận được ngoại lệ sau đây:
alt text http://blog.ianmellor.co.uk/images/xml_err.jpg
Ok cho đến nay .. nhưng khi sau đó chúng tôi cố gắng "tiếp tục" hoặc "bước qua", Tôi hy vọng nó chảy vào khối catch. Tuy nhiên, nó không; chúng tôi chỉ đơn giản là nhận được màn hình màu đỏ của cái chết:
alt text http://blog.ianmellor.co.uk/images/xml_err2.jpg
Tôi đang làm gì sai?
Đã thử bắt SystemException, Exception, System.Xml.XmlPath.XPathException với thành công tương tự .. – Sk93
trong tò mò, điều gì xảy ra khi bạn thay đổi catch (XmlException e) {} để bắt {}? – Razzie
Razzie: Chính xác như cũ. Ném màn hình màu đỏ o 'chết. – Sk93