Files
PowerShell/src/System.Management.Automation/utils/MshArgumentOutOfRangeException.cs
T
Steve Lee 4bc52d2358 Use consistent '(c)' for copyright symbol (#5210)
- Remove the year about copyright
- Fix casing of `All rights reserved`
- Replace Unicode characters representing single quote with a single quote
2017-10-26 14:12:19 -07:00

139 lines
5.1 KiB
C#

/********************************************************************++
Copyright (c) Microsoft Corporation. All rights reserved.
--********************************************************************/
using System.Runtime.Serialization;
using System.Security.Permissions;
namespace System.Management.Automation
{
/// <summary>
/// This is a wrapper for exception class
/// <see cref="System.ArgumentOutOfRangeException"/>
/// which provides additional information via
/// <see cref="System.Management.Automation.IContainsErrorRecord"/>.
/// </summary>
/// <remarks>
/// Instances of this exception class are usually generated by the
/// Monad Engine. It is unusual for code outside the Monad Engine
/// to create an instance of this class.
/// </remarks>
[Serializable]
public class PSArgumentOutOfRangeException
: ArgumentOutOfRangeException, IContainsErrorRecord
{
#region ctor
/// <summary>
/// Constructor for class PSArgumentOutOfRangeException
/// </summary>
/// <returns> constructed object </returns>
public PSArgumentOutOfRangeException()
: base()
{
}
/// <summary>
/// Initializes a new instance of the PSArgumentOutOfRangeException class.
/// </summary>
/// <param name="paramName"> </param>
/// <returns> constructed object </returns>
/// <remarks>
/// Per MSDN, the parameter is paramName and not message.
/// I confirm this experimentally as well.
/// </remarks>
public PSArgumentOutOfRangeException(string paramName)
: base(paramName)
{
}
/// <summary>
/// Initializes a new instance of the PSArgumentOutOfRangeException class.
/// </summary>
/// <param name="paramName"> </param>
/// <param name="actualValue"> </param>
/// <param name="message"> </param>
/// <returns> constructed object </returns>
/// <remarks>
/// ArgumentOutOfRangeException has this ctor form and we imitate it here.
/// </remarks>
public PSArgumentOutOfRangeException(string paramName, object actualValue, string message)
: base(paramName, actualValue, message)
{
}
#region Serialization
/// <summary>
/// Initializes a new instance of the PSArgumentOutOfRangeException class
/// using data serialized via
/// <see cref="System.Runtime.Serialization.ISerializable"/>
/// </summary>
/// <param name="info"> serialization information </param>
/// <param name="context"> streaming context </param>
/// <returns> constructed object </returns>
protected PSArgumentOutOfRangeException(SerializationInfo info,
StreamingContext context)
: base(info, context)
{
_errorId = info.GetString("ErrorId");
}
/// <summary>
/// Serializer for <see cref="System.Runtime.Serialization.ISerializable"/>
/// </summary>
/// <param name="info"> serialization information </param>
/// <param name="context"> streaming context </param>
[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
if (info == null)
{
throw new PSArgumentNullException("info");
}
base.GetObjectData(info, context);
info.AddValue("ErrorId", _errorId);
}
#endregion Serialization
/// <summary>
/// Initializes a new instance of the PSArgumentOutOfRangeException class.
/// </summary>
/// <param name="message"> </param>
/// <param name="innerException"> </param>
/// <returns> constructed object </returns>
public PSArgumentOutOfRangeException(string message,
Exception innerException)
: base(message, innerException)
{
}
#endregion ctor
/// <summary>
/// Additional information about the error
/// </summary>
/// <value></value>
/// <remarks>
/// Note that ErrorRecord.Exception is
/// <see cref="System.Management.Automation.ParentContainsErrorRecordException"/>.
/// </remarks>
public ErrorRecord ErrorRecord
{
get
{
if (null == _errorRecord)
{
_errorRecord = new ErrorRecord(
new ParentContainsErrorRecordException(this),
_errorId,
ErrorCategory.InvalidArgument,
null);
}
return _errorRecord;
}
}
private ErrorRecord _errorRecord;
private string _errorId = "ArgumentOutOfRange";
} // PSArgumentOutOfRangeException
} // System.Management.Automation