-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathStringArgumentPatternException.cs
More file actions
145 lines (135 loc) · 5.93 KB
/
StringArgumentPatternException.cs
File metadata and controls
145 lines (135 loc) · 5.93 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
138
139
140
141
142
143
144
145
// =================================================================================================================================
// Copyright (c) RapidField LLC. Licensed under the MIT License. See LICENSE.txt in the project root for license information.
// =================================================================================================================================
using RapidField.SolidInstruments.Core.Extensions;
using System;
using System.Diagnostics;
namespace RapidField.SolidInstruments.Core
{
/// <summary>
/// Represents an exception that is raised when a method is supplied with an <see cref="String" /> with an invalid pattern.
/// </summary>
public sealed class StringArgumentPatternException : ArgumentException
{
/// <summary>
/// Initializes a new instance of the <see cref="StringArgumentPatternException" /> class.
/// </summary>
public StringArgumentPatternException()
: this(null)
{
return;
}
/// <summary>
/// Initializes a new instance of the <see cref="StringArgumentPatternException" /> class.
/// </summary>
/// <param name="parameterName">
/// The name of the parameter that caused the exception.
/// </param>
public StringArgumentPatternException(String parameterName)
: this(null, parameterName)
{
return;
}
/// <summary>
/// Initializes a new instance of the <see cref="StringArgumentPatternException" /> class.
/// </summary>
/// <param name="failedMatchingPattern">
/// The regular expression pattern that the <see cref="String" /> failed to match, causing the current exception to be
/// raised.
/// </param>
/// <param name="parameterName">
/// The name of the parameter that caused the exception.
/// </param>
public StringArgumentPatternException(String failedMatchingPattern, String parameterName)
: this(failedMatchingPattern, parameterName, null, null)
{
return;
}
/// <summary>
/// Initializes a new instance of the <see cref="StringArgumentPatternException" /> class.
/// </summary>
/// <param name="message">
/// The error message that explains the reason for the exception.
/// </param>
/// <param name="innerException">
/// The exception that is the cause of the current exception.
/// </param>
public StringArgumentPatternException(String message, Exception innerException)
: this(null, message, innerException)
{
return;
}
/// <summary>
/// Initializes a new instance of the <see cref="StringArgumentPatternException" /> class.
/// </summary>
/// <param name="parameterName">
/// The name of the parameter that caused the exception.
/// </param>
/// <param name="message">
/// The error message that explains the reason for the exception.
/// </param>
/// <param name="innerException">
/// The exception that is the cause of the current exception.
/// </param>
public StringArgumentPatternException(String parameterName, String message, Exception innerException)
: this(null, parameterName, message, innerException)
{
return;
}
/// <summary>
/// Initializes a new instance of the <see cref="StringArgumentPatternException" /> class.
/// </summary>
/// <param name="failedMatchingPattern">
/// The regular expression pattern that the <see cref="String" /> failed to match, causing the current exception to be
/// raised.
/// </param>
/// <param name="parameterName">
/// The name of the parameter that caused the exception.
/// </param>
/// <param name="message">
/// The error message that explains the reason for the exception.
/// </param>
/// <param name="innerException">
/// The exception that is the cause of the current exception.
/// </param>
public StringArgumentPatternException(String failedMatchingPattern, String parameterName, String message, Exception innerException)
: base(message.IsNullOrEmpty() ? ConstructMessage(parameterName, failedMatchingPattern) : message, parameterName, innerException)
{
FailedMatchingPattern = failedMatchingPattern;
}
/// <summary>
/// Constructs a message for the exception.
/// </summary>
/// <param name="parameterName">
/// The name of the parameter which caused the current exception to be raised.
/// </param>
/// <param name="failedMatchingPattern">
/// The regular expression pattern that the <see cref="String" /> failed to match, causing the current exception to be
/// raised.
/// </param>
/// <returns>
/// A message for the exception.
/// </returns>
[DebuggerHidden]
private static String ConstructMessage(String parameterName, String failedMatchingPattern)
{
if (parameterName.IsNullOrEmpty())
{
return "A string argument was specified which does not match the required pattern.";
}
else if (failedMatchingPattern.IsNullOrEmpty())
{
return $"The string argument for {parameterName} does not match the required pattern.";
}
return $"The string argument for {parameterName} does not match the required pattern: {failedMatchingPattern}";
}
/// <summary>
/// Gets the regular expression pattern that the <see cref="String" /> failed to match, causing the current exception to be
/// raised.
/// </summary>
public String FailedMatchingPattern
{
get;
}
}
}