Chris Skardon 的个人资料Chris Skardon日志列表 工具 帮助

日志


2007年11月

ArgumentException / ArgumentNullException argument order.

When I come to use the ArgumentException or ArgumentNullException I pretty much always get the argument order the wrong way around - is it 'paramName' first, or the 'message'? Every time I do this I silently curse the framework designers and swear I would have made the args the same way around, either 'paramName' first always, or the message first.

Then, not 10 minutes ago, I finally twigged why. Or at least a reason why... Typically (at least in my code) the exceptions are used in the following manner:

public void Foo(string myArg)
{
    if(myArg == null)
       throw new ArgumentNullException("myArg", "Argh! You simply *cannot* use a null string here!!");

    if(myArg.Length == 0)
       throw new ArgumentException("Empty strings just don't make sense!!", "myArg");

    /* Other Stuff Here */
}

But recently I've been being a bit lazy with my ArgNull exceptions;

throw new ArgumentNullException("myArg");

OK, not lazy as such, but I've kind of realised adding the message isn't really needed, there's not a lot more I can add that the exception itself doesn't describe, and I reckon this is what was intended when it was designed - sure - you can add a message - but why bother?

The ArgException does need the message, and it's far more important than the paramName argument because there are so many different reasons for the exception to be thrown - too long, too short, too many letter 'e's etc. By making the message the first argument, a developer (hopefully) thinks about what to write there, and a subsequent user of the class can get a good reason for the exception.

So, now every time I get the args wrong (which - thanks to this revelation - happens little now) I apologise to the designers for my previous curses :)

评论

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。

若要添加评论,请使用您的 Windows Live ID 登录(如果您使用过 Hotmail、Messenger 或 Xbox LIVE,您就拥有 Windows Live ID)。登录


还没有 Windows Live ID 吗?请注册

引用通告

此日志的引用通告 URL 是:
http://cskardon.spaces.live.com/blog/cns!42B5E914DFA20D31!239.trak
引用此项的网络日志