我在代码中有几个地方会抛出一个新的System.Xml.XmlException似乎合适。我可以做

throw new XmlException("Your XML sucks go fix it then try again.");


但是我认为最好是尽可能利用异常类特有的成员(否则,您最好每次都抛出一个普通的ol'Exception)。 SourceUri和LineNumber会有所帮助,但是它们只有get方法,我无法为它们分配值!仅有3个构造函数重载,并且这些重载都没有为这些成员提供参数。我只能初始化Message,别无其他。

必须有某种方法可以用值填充这些数据成员,否则XmlException为什么会打扰他们?

我想我可以创建一个继承XmlException的新类,并编写一个初始化SourceUri等的新构造函数。但是,仍然必须有一种只使用XmlException的方法。对?

最佳答案

有一个采用sourceUri参数的构造函数:

internal XmlException(string res, string[] args, string sourceUri)


但是由于它是内部的,因此只能在System.Xml程序集中调用。无论如何,我认为您不应该自己抛出XmlException。与XML相关的BCL类通常抛出此异常。您应该创建自己的异常并将其引发。

10-08 18:30