缺少参数名的ArgumentNullException消息

8

我在我的C#代码的一部分中使用ArgumentNullException。我想要捕获和显示异常消息,但不包括参数名称。我想将参数名称传递给异常构造函数。

throw new ArgumentNullException("myParameter", errorMessageStringVariable);

如果我调用 error.Message,我会得到类似以下的内容:
errorMessageStringVariable parameter name: myParameter 我想只显示 errorMessageStringVariable ,在不对 error.Message 进行任何格式化处理的情况下,是否可以使用 ArgumentNullException 实现?

你是否抛出了任何继承自“ArgumentException”的其他异常? - HuorSwords
我所知道的没有。但说实话,抛出异常和try块相距几个级别,我不敢说在它们之间调用的其他代码不会抛出这样的异常。我正在处理的代码非常晦涩难懂。我不熟悉在try块内发生的每种可能的执行路径。 - filipv
2个回答

11

如果你想构建没有名称的异常,请使用:

new ArgumentNullException(null, errorMessageStringVariable)

但是如果您想呈现ArgumentNullException,其中paramName被设置,答案似乎是否定的。您必须对Message属性进行字符串操作。

您可以创建一个从ArgumentNullException派生的新类。


谢谢。这就是我需要知道的全部。 - filipv

1

If you call:

new ArgumentNullException(null, errorMessageStringVariable)

异常信息将会是:
Value cannot be null. Parameter name: errorMessageStringVariable 如果你使用以下代码:
new ArgumentNullException(string.Empty, errorMessageStringVariable)

你只会得到错误信息。


2
你的第一个说法是完全不正确的。在此在线尝试(C#代码已编码在URL中)。 在我看来,使用空字符串是可疑的。 - Jeppe Stig Nielsen
1
还要注意,(new ArgumentNullException()).ParamName 是一个空引用,而不是一个空字符串。这表明当省略参数名称时,ParamName 属性应该为 null(而不是 "")。 - Jeppe Stig Nielsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接