// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //============================================================================= // // Class: ArgumentOutOfRangeException // // Purpose: Exception class for method arguments outside of the legal range. // //============================================================================= namespace System { using System; using System.Runtime.CompilerServices; // The ArgumentOutOfRangeException is thrown when an argument // is outside the legal range for that argument. This may often be caused // by // //| public partial class ArgumentOutOfRangeException : ArgumentException { private static String _rangeMessage; private Object m_actualValue; private static String RangeMessage { get { if (_rangeMessage == null) _rangeMessage = "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) { } //| public ArgumentOutOfRangeException(String paramName) : base(RangeMessage, paramName) { } //| public ArgumentOutOfRangeException(String paramName, String message) : base(message, paramName) { } // 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) { m_actualValue = actualValue; } //| public override String Message { get { String s = base.Message; if (m_actualValue != null) { String valueMessage = String.Format("ArgumentOutOfRange_ActualValue", m_actualValue.ToString()); if (s == null) return 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 { get { return m_actualValue; } } } }