| File: ApiLifecycle\Json\JsonParseException.cs | Web Access |
| Project: src\src\Analyzers\Microsoft.Analyzers.Local\Microsoft.Analyzers.Local.csproj (Microsoft.Analyzers.Local) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // Forked from StyleCop.Analyzers repo. using System; namespace Microsoft.Extensions.LocalAnalyzers.Json; /// <summary> /// The exception that is thrown when a JSON message cannot be parsed. /// </summary> /// <remarks> /// <para>This exception is only intended to be thrown by LightJson.</para> /// </remarks> #pragma warning disable CA1032 // Implement standard exception constructors public sealed class JsonParseException : Exception #pragma warning restore CA1032 // Implement standard exception constructors { /// <summary> /// Gets the text position where the error occurred. /// </summary> /// <value>The text position where the error occurred.</value> public TextPosition Position { get; } /// <summary> /// Gets the type of error that caused the exception to be thrown. /// </summary> /// <value>The type of error that caused the exception to be thrown.</value> public ParsingError Error { get; } /// <summary> /// Initializes a new instance of the <see cref="JsonParseException"/> class. /// </summary> public JsonParseException() : base(GetMessage(ParsingError.Unknown)) { } /// <summary> /// Initializes a new instance of the <see cref="JsonParseException"/> class with the given error type and position. /// </summary> /// <param name="type">The error type that describes the cause of the error.</param> /// <param name="position">The position in the text where the error occurred.</param> public JsonParseException(ParsingError type, TextPosition position) : this(GetMessage(type), type, position) { } /// <summary> /// Initializes a new instance of the <see cref="JsonParseException"/> class with the given message, error type, and position. /// </summary> /// <param name="message">The message that describes the error.</param> /// <param name="type">The error type that describes the cause of the error.</param> /// <param name="position">The position in the text where the error occurred.</param> public JsonParseException(string message, ParsingError error, TextPosition position) : base(message) { Error = error; Position = position; } private static string GetMessage(ParsingError type) { return type switch { ParsingError.IncompleteMessage => "The string ended before a value could be parsed.", ParsingError.InvalidOrUnexpectedCharacter => "The parser encountered an invalid or unexpected character.", ParsingError.DuplicateObjectKeys => "The parser encountered a JsonObject with duplicate keys.", _ => "An error occurred while parsing the JSON message." }; } }