If by user you mean someone using your code, from the outside (like we are using the code in the .NET framework), then yes. It's no different then us catching a ArgumentOutOfRangeException, or something like that. Somewhere in the framework source, there's a check if some argument is valid, and if not, the exception is thrown
Code:
if (argument >= list.Count)
throw new ArgumentOutOfRangeException("probably something important here");
then, outside of this class, a user uses this as
Code:
try
{
list[3].Name = "Nick";
}
catch (ArgumentOutOfRangeException ex)
{
MessageBox.Show(ex.Message);
}
It's just the same for your own code, just replace "ArgumentOutOfRange" with whatever is appropriate for your exception.
EDIT
In case you were wondering how to create your own type of exception, just create a class that inherits Exception and add your custom functionality, if any.