| Chris Skardon 的个人资料Chris Skardon日志列表 | 帮助 |
|
|
2007年11月 Moving Blogs...I've taken the unilateral decision to move to a different blog server - so I can use tags and more than one category etc. So --- the new blog location is: http://www.xclave.co.uk/ Hope to see you there my one reader! 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 :) |
|
|