【发布时间】:2016-09-15 20:57:16
【问题描述】:
我正在阅读this post,其中回答者提到他更喜欢ArgumentNullException 而不是NullReferenceException。
MSDN 提到 NullReferenceException:
尝试取消引用空对象引用时引发的异常。
在ArgumentNullException they 说:
将空引用(Visual Basic 中的 Nothing)传递给不接受它作为有效参数的方法时引发的异常。
回答者似乎说你可以使用任何一个。
有什么理由或任何情况我应该选择一个而不是另一个?
附言
我知道这个问题可能是基于意见的。 我想要事实、背景和情况。我对个人喜好不感兴趣。
【问题讨论】:
-
我应该选择一个而不是另一个你的意思是你应该扔哪个,或者你应该让哪个发生?
-
与stackoverflow.com/questions/463302/… 的问题非常相似,stackoverflow.com/questions/463302/… 的答案与此问题相关。
-
你也不能使用。 NRE 必须保留给那些实际上因取消引用 null 而死的程序。您使用 ArgumentNullException 来防止它们在 NRE 上摔倒。告诉客户端程序员“我知道你做错了,请永远不要传递 null”。 NRE 不会发送如此精美的消息,当它被抛出时,您无法确定它是您的错误还是库的错误。
-
@DaveShaw 我应该扔哪个,我的问题很广泛:S
标签: c# exception nullreferenceexception