是否存在不从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/