diff options
Diffstat (limited to 'src/mscorlib/src/System/ArgumentOutOfRangeException.cs')
-rw-r--r-- | src/mscorlib/src/System/ArgumentOutOfRangeException.cs | 101 |
1 files changed, 58 insertions, 43 deletions
diff --git a/src/mscorlib/src/System/ArgumentOutOfRangeException.cs b/src/mscorlib/src/System/ArgumentOutOfRangeException.cs index 59a8434089..90837810d1 100644 --- a/src/mscorlib/src/System/ArgumentOutOfRangeException.cs +++ b/src/mscorlib/src/System/ArgumentOutOfRangeException.cs @@ -11,92 +11,107 @@ ** =============================================================================*/ -namespace System { - using System; - using System.Runtime.Remoting; - using System.Runtime.Serialization; - using System.Globalization; - using System.Diagnostics.Contracts; - +using System; +using System.Runtime.Remoting; +using System.Runtime.Serialization; +using System.Globalization; +using System.Diagnostics.Contracts; + +namespace System +{ // The ArgumentOutOfRangeException is thrown when an argument // is outside the legal range for that argument. [Serializable] - public class ArgumentOutOfRangeException : ArgumentException, ISerializable { - + public class ArgumentOutOfRangeException : ArgumentException, ISerializable + { private static volatile String _rangeMessage; private Object m_actualValue; - private static String RangeMessage { - get { + private static String RangeMessage + { + get + { if (_rangeMessage == null) - _rangeMessage = Environment.GetResourceString("Arg_ArgumentOutOfRangeException"); + _rangeMessage = SR.Arg_ArgumentOutOfRangeException; return _rangeMessage; } } // Creates a new ArgumentOutOfRangeException with its message // string set to a default message explaining an argument was out of range. - public ArgumentOutOfRangeException() - : base(RangeMessage) { - SetErrorCode(__HResults.COR_E_ARGUMENTOUTOFRANGE); + public ArgumentOutOfRangeException() + : base(RangeMessage) + { + HResult = __HResults.COR_E_ARGUMENTOUTOFRANGE; } - - public ArgumentOutOfRangeException(String paramName) - : base(RangeMessage, paramName) { - SetErrorCode(__HResults.COR_E_ARGUMENTOUTOFRANGE); + + public ArgumentOutOfRangeException(String paramName) + : base(RangeMessage, paramName) + { + HResult = __HResults.COR_E_ARGUMENTOUTOFRANGE; } - - public ArgumentOutOfRangeException(String paramName, String message) - : base(message, paramName) { - SetErrorCode(__HResults.COR_E_ARGUMENTOUTOFRANGE); + + public ArgumentOutOfRangeException(String paramName, String message) + : base(message, paramName) + { + HResult = __HResults.COR_E_ARGUMENTOUTOFRANGE; } - public ArgumentOutOfRangeException(String message, Exception innerException) - : base(message, innerException) { - SetErrorCode(__HResults.COR_E_ARGUMENTOUTOFRANGE); + public ArgumentOutOfRangeException(String message, Exception innerException) + : base(message, innerException) + { + HResult = __HResults.COR_E_ARGUMENTOUTOFRANGE; } - + // We will not use this in the classlibs, but we'll provide it for // anyone that's really interested so they don't have to stick a bunch // of printf's in their code. - public ArgumentOutOfRangeException(String paramName, Object actualValue, String message) - : base(message, paramName) { + public ArgumentOutOfRangeException(String paramName, Object actualValue, String message) + : base(message, paramName) + { m_actualValue = actualValue; - SetErrorCode(__HResults.COR_E_ARGUMENTOUTOFRANGE); + HResult = __HResults.COR_E_ARGUMENTOUTOFRANGE; } - - public override String Message { - get { + + public override String Message + { + get + { String s = base.Message; - if (m_actualValue != null) { - String valueMessage = Environment.GetResourceString("ArgumentOutOfRange_ActualValue", m_actualValue.ToString()); + if (m_actualValue != null) + { + String valueMessage = SR.Format(SR.ArgumentOutOfRange_ActualValue, m_actualValue.ToString()); if (s == null) return valueMessage; - return s + Environment.NewLine + valueMessage; + return s + Environment.NewLine + valueMessage; } return s; } } - + // Gets the value of the argument that caused the exception. // Note - we don't set this anywhere in the class libraries in // version 1, but it might come in handy for other developers who // want to avoid sticking printf's in their code. - public virtual Object ActualValue { + public virtual Object ActualValue + { get { return m_actualValue; } } - - public override void GetObjectData(SerializationInfo info, StreamingContext context) { - if (info==null) { + + public override void GetObjectData(SerializationInfo info, StreamingContext context) + { + if (info == null) + { throw new ArgumentNullException(nameof(info)); } Contract.EndContractBlock(); base.GetObjectData(info, context); info.AddValue("ActualValue", m_actualValue, typeof(Object)); } - - protected ArgumentOutOfRangeException(SerializationInfo info, StreamingContext context) : base(info, context) { + + protected ArgumentOutOfRangeException(SerializationInfo info, StreamingContext context) : base(info, context) + { m_actualValue = info.GetValue("ActualValue", typeof(Object)); } } |