是否存在不从FormatException继承ArgumentException的已知原因?格式无效似乎是参数无效的一种非常特殊的情况,类似于ArgumentOutOfRangeException

MSDN article for the class指出:



听起来就像是ArgumentException或派生类给我的情况。

这意味着您无法处理更大的FormatException异常家族下的ArgumentException,也无法识别导致引发异常的参数。

是否有任何理由将这种看似过时的异常置于原地?

最佳答案

当方法的形式参数无效时,不一定会抛出FormatException。如果该方法正在消耗外部资源,并且来自外部资源的数据格式不合适,也会发生这种情况。

例如,如果要从流中读取的内容不是有效的7位编码整数,则 BinaryReader.Read7BitEncodedInt 将抛出FormatException。它根本不需要任何参数。另一方面,仅当作为形式参数传递给方法的参数无效时,才应引发ArgumentException

您从MSDN文章引用的描述比FormatException实际的限制性更强,应该加以澄清。

关于.net - 为什么FormatException不继承自ArgumentException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2135328/

10-14 11:24