This exception indicates that illegal data was passed to a method or constructor call. Note that illegal data is entirely contextualthe data may be a legitimate .NET value, but inappropriate for the use in question. Although .NET languages are type-safe in that you can't pass a string as a parameter when an integer is expected, there is nothing to keep you from passing a null or invalid value, such as sending (2001 , 13 , 32) to DateTime 's constructor. However, there is no 32nd day of the 13th month of the year 2001, and if you try to initialize such a date, you'll get an exception. The ArgumentException class (or one of its subclasses, ArgumentNullException or ArgumentOutOfRangeException ) indicates that a method argument violated such a constraint. If you need to implement this exception in your own code, consider using one of its subclasses instead, since they represent common argument exceptions. public class ArgumentException : SystemException { // Public Constructors public ArgumentException ( ); public ArgumentException (string message ); public ArgumentException (string message , Exception innerException ); public ArgumentException (string message , string paramName ); public ArgumentException (string message , string paramName , Exception innerException ); // Protected Constructors protected ArgumentException (System.Runtime.Serialization.SerializationInfo info , System.Runtime.Serialization.StreamingContext context ); // Public Instance Properties public override string Message {get; } // overrides Exception public virtual string ParamName {get; } // Public Instance Methods public override void GetObjectData (System.Runtime.Serialization.SerializationInfo info , System.Runtime.Serialization.StreamingContext context ); // overrides Exception } HierarchyObject Exception(System.Runtime.Serialization.ISerializable) SystemException ArgumentException SubclassesArgumentNullException , ArgumentOutOfRangeException , DuplicateWaitObjectException |