forked from PowerShell/PowerShell
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMshArgumentOutOfRangeException.cs
More file actions
138 lines (128 loc) · 5.05 KB
/
MshArgumentOutOfRangeException.cs
File metadata and controls
138 lines (128 loc) · 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/********************************************************************++
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