在 C# 中引发保留异常时会出现啥问题? [关闭]
Posted
技术标签:
【中文标题】在 C# 中引发保留异常时会出现啥问题? [关闭]【英文标题】:What can go wrong when throwing a reserved exception in C#? [closed]在 C# 中引发保留异常时会出现什么问题? [关闭] 【发布时间】:2013-02-12 13:49:08 【问题描述】:如果您在代码中抛出 System.IndexOutOfRangeException
(see reference),FxCop 会违反规则 CA2201。这样做的理由是,根据文档,System.IndexOutOfRangeException
是“保留的,只能由公共语言运行时抛出”。
但是如果你抛出System.IndexOutOfRangeException
,实际上会出什么问题呢?
【问题讨论】:
你为什么需要自己扔? @Romoku - 即便如此。对于大多数类型,您将在已经抛出这个的现有类型中拥有底层存储。 IndexOutOfRangeException 的文档明确指出它特定于数组,因此当它被抛出时,用户将开始寻找数组。如果参数超出范围,通常会抛出 ArgumentOutOfRangeException。 +1 因为这是一个可以用事实回答的明确问题。我不太明白为什么有人会投票关闭它,除非它是重复的,其中一位 close 选民介意解释一下吗? 尽管它可以并且将正常工作,但隐含的假设是运行时抛出此异常而不是您的代码。这可能看起来并不重要,但是当您或其他人必须在数月或数年内解决此问题时,它可能会导致某人走上错误的道路。 【参考方案1】:什么都没有。
从技术角度来看,抛出这个异常是完全没问题的。如果你这样做,什么都不会破坏。
但请记住,只有在首先遇到 System.IndexOutOfRangeException
时才应该抛出 System.IndexOutOfRangeException
,否则这个异常将不合适,因为它非常明确地定义了要使用的异常类型为了。 MSDN states for theSystem.IndexOutOfRangeException
:
尝试访问具有超出数组边界的索引的数组元素时引发的异常。这个类不能被继承。
【讨论】:
以上是关于在 C# 中引发保留异常时会出现啥问题? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章