ArgumentException should be thrown for the String.Empty case. This would indicate an issue other than it being null. To avoid a NullReferenceException I check for null first, then I trim and check for the empty case to prevent any whitespace from passing.
private void SomeMethod(string someArgument)
{
if(someArgument == null)
throw new ArgumentNullException("someArgument");
if (someArgument.Trim() == String.Empty)
throw new ArgumentException("Input cannot be empty", "someArgument");
// do some work
}
As of .NET 4.0 you can use the String.IsNullOrWhiteSpace method to perform these checks in one go. By doing so you forgo the ability to specify a granular exception type, so I would opt for the ArgumentException and update the message accordingly.