123 lines
3.5 KiB
C#
123 lines
3.5 KiB
C#
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
|
|
using System;
|
|
using Microsoft.Extensions.JsonParser.Sources;
|
|
|
|
namespace Microsoft.DotNet.ProjectModel
|
|
{
|
|
public sealed class FileFormatException : Exception
|
|
{
|
|
private FileFormatException(string message) :
|
|
base(message)
|
|
{
|
|
}
|
|
|
|
private FileFormatException(string message, Exception innerException) :
|
|
base(message, innerException)
|
|
{
|
|
}
|
|
|
|
public string Path { get; private set; }
|
|
public int Line { get; private set; }
|
|
public int Column { get; private set; }
|
|
|
|
public override string ToString()
|
|
{
|
|
return $"{Path}({Line},{Column}): Error: {base.ToString()}";
|
|
}
|
|
|
|
internal static FileFormatException Create(Exception exception, string filePath)
|
|
{
|
|
if (exception is JsonDeserializerException)
|
|
{
|
|
return new FileFormatException(exception.Message, exception)
|
|
.WithFilePath(filePath)
|
|
.WithLineInfo((JsonDeserializerException)exception);
|
|
}
|
|
else
|
|
{
|
|
return new FileFormatException(exception.Message, exception)
|
|
.WithFilePath(filePath);
|
|
}
|
|
}
|
|
|
|
internal static FileFormatException Create(Exception exception, JsonValue jsonValue, string filePath)
|
|
{
|
|
var result = Create(exception, jsonValue)
|
|
.WithFilePath(filePath);
|
|
|
|
return result;
|
|
}
|
|
|
|
internal static FileFormatException Create(Exception exception, JsonValue jsonValue)
|
|
{
|
|
var result = new FileFormatException(exception.Message, exception)
|
|
.WithLineInfo(jsonValue);
|
|
|
|
return result;
|
|
}
|
|
|
|
internal static FileFormatException Create(string message, JsonValue jsonValue, string filePath)
|
|
{
|
|
var result = Create(message, jsonValue)
|
|
.WithFilePath(filePath);
|
|
|
|
return result;
|
|
}
|
|
|
|
internal static FileFormatException Create(string message, string filePath)
|
|
{
|
|
var result = new FileFormatException(message)
|
|
.WithFilePath(filePath);
|
|
|
|
return result;
|
|
}
|
|
|
|
internal static FileFormatException Create(string message, JsonValue jsonValue)
|
|
{
|
|
var result = new FileFormatException(message)
|
|
.WithLineInfo(jsonValue);
|
|
|
|
return result;
|
|
}
|
|
|
|
internal FileFormatException WithFilePath(string path)
|
|
{
|
|
if (path == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(path));
|
|
}
|
|
|
|
Path = path;
|
|
|
|
return this;
|
|
}
|
|
|
|
private FileFormatException WithLineInfo(JsonValue value)
|
|
{
|
|
if (value == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(value));
|
|
}
|
|
|
|
Line = value.Line;
|
|
Column = value.Column;
|
|
|
|
return this;
|
|
}
|
|
|
|
private FileFormatException WithLineInfo(JsonDeserializerException exception)
|
|
{
|
|
if (exception == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(exception));
|
|
}
|
|
|
|
Line = exception.Line;
|
|
Column = exception.Column;
|
|
|
|
return this;
|
|
}
|
|
}
|
|
}
|