qamp/Qrakhen.Qamp.Core/Exceptions.cs

34 lines
1.0 KiB
C#

using Qrakhen.Qamp.Core.Tokenization;
using Qrakhen.Qamp.Core.Values;
namespace Qrakhen.Qamp.Core;
public class QampException(string message, object? context = null)
: Exception(message)
{
public readonly object? Context = context;
}
public class ReaderException(string message, IReader<Token> reader)
: QampException(message, reader.CurrentPosition)
{
public readonly IReader<Token> Reader = reader;
}
public class TokenException(string message, IReader<Token> reader, Token token)
: ReaderException($"TokenError {token} at {token.Position}: {message}", reader)
{
public readonly Token Token = token;
}
public class RuntimeException(string message, object? context = null)
: QampException(message, context);
public class DivisionByZeroException(string? message, object? context = null)
: RuntimeException(message ?? "Can not divide by zero", context);
public class ConversionException(string message, Value value, object? context = null)
: RuntimeException(message, context)
{
public readonly Value Value = value;
}