#nullable enable using System.Diagnostics.CodeAnalysis; namespace Terminal.Gui; /// An exception thrown when something goes wrong when trying to parse a . /// Contains additional information to help locate the problem.
Not intended to be thrown by consumers.
public sealed class ColorParseException : FormatException { internal const string DefaultMessage = "Failed to parse text as Color."; internal ColorParseException (string colorString, string? message, Exception? innerException = null) : base (message ?? DefaultMessage, innerException) { ColorString = colorString; } internal ColorParseException (string colorString, string? message = DefaultMessage) : base (message) { ColorString = colorString; } /// Creates a new instance of a populated with the provided values. /// The text that caused this exception, as a . /// The specific value in that caused this exception. /// The name of the value (red, green, blue, alpha) that represents. /// The reason that failed to parse. internal ColorParseException ( in ReadOnlySpan colorString, string reason, in ReadOnlySpan badValue = default, in ReadOnlySpan badValueName = default ) : base (DefaultMessage) { ColorString = colorString.ToString (); BadValue = badValue.ToString (); BadValueName = badValueName.ToString (); Reason = reason; } /// Creates a new instance of a populated with the provided values. /// The text that caused this exception, as a . /// The specific value in that caused this exception. /// The name of the value (red, green, blue, alpha) that represents. /// The reason that failed to parse. internal ColorParseException ( in ReadOnlySpan colorString, string? badValue = null, string? badValueName = null, string? reason = null ) : base (DefaultMessage) { ColorString = colorString.ToString (); BadValue = badValue; BadValueName = badValueName; Reason = reason; } /// Gets the substring of caused this exception, as a /// May be null or empty - only set if known. public string? BadValue { get; } /// Gets the name of the color component corresponding to , if known. /// May be null or empty - only set if known. public string? BadValueName { get; } /// Gets the text that failed to parse, as a /// Is marked , so must be set by a constructor or initializer. public string ColorString { get; } /// Gets the reason that failed to parse, if known. /// May be null or empty - only set if known. public string? Reason { get; } [DoesNotReturn] internal static void Throw ( in ReadOnlySpan colorString, string reason, in ReadOnlySpan badValue = default, in ReadOnlySpan badValueName = default ) { throw new ColorParseException (in colorString, reason, in badValue, in badValueName); } [DoesNotReturn] internal static void ThrowIfNotAsciiDigits ( in ReadOnlySpan valueText, string reason, in ReadOnlySpan badValue = default, in ReadOnlySpan badValueName = default ) { throw new ColorParseException (in valueText, reason, in badValue, in badValueName); } }