using System; using System.Runtime.Serialization; namespace DPumpHydr.WinFrmUI.WenSkin.Json { /// /// The exception thrown when an error occurs while reading JSON text. /// [Serializable] public class JsonReaderException : JsonException { /// /// Gets the line number indicating where the error occurred. /// /// The line number indicating where the error occurred. public int LineNumber { get; private set; } /// /// Gets the line position indicating where the error occurred. /// /// The line position indicating where the error occurred. public int LinePosition { get; private set; } /// /// Gets the path to the JSON where the error occurred. /// /// The path to the JSON where the error occurred. public string Path { get; private set; } /// /// Initializes a new instance of the class. /// public JsonReaderException() { } /// /// Initializes a new instance of the class /// with a specified error message. /// /// The error message that explains the reason for the exception. public JsonReaderException(string message) : base(message) { } /// /// Initializes a new instance of the class /// with a specified error message and a reference to the inner exception that is the cause of this exception. /// /// The error message that explains the reason for the exception. /// The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. public JsonReaderException(string message, Exception innerException) : base(message, innerException) { } /// /// Initializes a new instance of the class. /// /// The that holds the serialized object data about the exception being thrown. /// The that contains contextual information about the source or destination. /// The parameter is null. /// The class name is null or is zero (0). public JsonReaderException(SerializationInfo info, StreamingContext context) : base(info, context) { } internal JsonReaderException(string message, Exception innerException, string path, int lineNumber, int linePosition) : base(message, innerException) { Path = path; LineNumber = lineNumber; LinePosition = linePosition; } internal static JsonReaderException Create(JsonReader reader, string message) { return Create(reader, message, null); } internal static JsonReaderException Create(JsonReader reader, string message, Exception ex) { return Create(reader as IJsonLineInfo, reader.Path, message, ex); } internal static JsonReaderException Create(IJsonLineInfo lineInfo, string path, string message, Exception ex) { message = JsonPosition.FormatMessage(lineInfo, path, message); int lineNumber; int linePosition; if (lineInfo != null && lineInfo.HasLineInfo()) { lineNumber = lineInfo.LineNumber; linePosition = lineInfo.LinePosition; } else { lineNumber = 0; linePosition = 0; } return new JsonReaderException(message, ex, path, lineNumber, linePosition); } } }