diff --git a/VpSharp/src/Exceptions/ObjectNotFoundException.cs b/VpSharp/src/Exceptions/ObjectNotFoundException.cs index e5c4086..8fefe6c 100644 --- a/VpSharp/src/Exceptions/ObjectNotFoundException.cs +++ b/VpSharp/src/Exceptions/ObjectNotFoundException.cs @@ -1,24 +1,39 @@ -namespace VpSharp.Exceptions; +using VpSharp.Internal; + +namespace VpSharp.Exceptions; /// /// The exception that is thrown when an operation was performed on an object that does not exist. /// -public sealed class ObjectNotFoundException : Exception +public sealed class ObjectNotFoundException : VirtualParadiseException { - /// + /// + /// Initializes a new instance of the class. + /// public ObjectNotFoundException() + : base(ReasonCode.ObjectNotFound) { } - /// + /// + /// Initializes a new instance of the class. + /// + /// The message that describes the error. public ObjectNotFoundException(string message) - : base(message) + : base(ReasonCode.ObjectNotFound, message) { } - /// + /// + /// Initializes a new instance of the class. + /// + /// The message that describes the error. + /// + /// 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 ObjectNotFoundException(string message, Exception innerException) - : base(message, innerException) + : base(ReasonCode.ObjectNotFound, message, innerException) { } } diff --git a/VpSharp/src/Exceptions/UserNotFoundException.cs b/VpSharp/src/Exceptions/UserNotFoundException.cs index efaa9a5..3d96cda 100644 --- a/VpSharp/src/Exceptions/UserNotFoundException.cs +++ b/VpSharp/src/Exceptions/UserNotFoundException.cs @@ -1,24 +1,39 @@ -namespace VpSharp.Exceptions; +using VpSharp.Internal; + +namespace VpSharp.Exceptions; /// /// The exception that is thrown when a user could not be found. /// -public sealed class UserNotFoundException : Exception +public sealed class UserNotFoundException : VirtualParadiseException { - /// + /// + /// Initializes a new instance of the class. + /// public UserNotFoundException() + : base(ReasonCode.NoSuchUser) { } - /// + /// + /// Initializes a new instance of the class. + /// + /// The message that describes the error. public UserNotFoundException(string message) - : base(message) + : base(ReasonCode.NoSuchUser, message) { } - /// + /// + /// Initializes a new instance of the class. + /// + /// The message that describes the error. + /// + /// 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 UserNotFoundException(string message, Exception innerException) - : base(message, innerException) + : base(ReasonCode.NoSuchUser, message, innerException) { } } diff --git a/VpSharp/src/Exceptions/VersionMismatchException.cs b/VpSharp/src/Exceptions/VersionMismatchException.cs index 583340b..afd2541 100644 --- a/VpSharp/src/Exceptions/VersionMismatchException.cs +++ b/VpSharp/src/Exceptions/VersionMismatchException.cs @@ -1,25 +1,33 @@ -namespace VpSharp.Exceptions; +using VpSharp.Internal; + +namespace VpSharp.Exceptions; /// /// The exception that is thrown when the version of the .NET wrapper and the version of the native SDK do not match. /// -public sealed class VersionMismatchException : Exception +public sealed class VersionMismatchException : VirtualParadiseException { - /// + /// + /// Initializes a new instance of the class. + /// public VersionMismatchException() : this("The version of the .NET wrapper and the version of the native SDK do not match.") { } - /// + /// + /// Initializes a new instance of the class. + /// public VersionMismatchException(string message) - : base(message) + : base(ReasonCode.VersionMismatch, message) { } - /// + /// + /// Initializes a new instance of the class. + /// public VersionMismatchException(string message, Exception innerException) - : base(message, innerException) + : base(ReasonCode.VersionMismatch, message, innerException) { } } diff --git a/VpSharp/src/Exceptions/VirtualParadiseException.cs b/VpSharp/src/Exceptions/VirtualParadiseException.cs new file mode 100644 index 0000000..9ce062e --- /dev/null +++ b/VpSharp/src/Exceptions/VirtualParadiseException.cs @@ -0,0 +1,78 @@ +using VpSharp.Internal; + +namespace VpSharp.Exceptions; + +/// +/// The exception that is thrown when an operation fails in the native SDK. +/// +public class VirtualParadiseException : Exception +{ + /// + /// Initializes a new instance of the class. + /// + public VirtualParadiseException() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The message that describes the error. + public VirtualParadiseException(string message) + : base(message) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The message that describes the error. + /// + /// 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 VirtualParadiseException(string message, Exception innerException) : base(message, innerException) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The underlying reason code. + internal VirtualParadiseException(ReasonCode reasonCode) + { + ReasonCode = reasonCode; + } + + /// + /// Initializes a new instance of the class. + /// + /// The underlying reason code. + /// The message that describes the error. + internal VirtualParadiseException(ReasonCode reasonCode, string message) + : base(message) + { + ReasonCode = reasonCode; + } + + /// + /// Initializes a new instance of the class. + /// + /// The underlying reason code. + /// The message that describes the error. + /// + /// The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner + /// exception is specified. + /// + internal VirtualParadiseException(ReasonCode reasonCode, string message, Exception innerException) + : base(message, innerException) + { + ReasonCode = reasonCode; + } + + /// + /// Gets the reason code. + /// + /// The reason code. + internal ReasonCode ReasonCode { get; } +} diff --git a/VpSharp/src/Exceptions/WorldNotFoundException.cs b/VpSharp/src/Exceptions/WorldNotFoundException.cs index 4c12203..c966939 100644 --- a/VpSharp/src/Exceptions/WorldNotFoundException.cs +++ b/VpSharp/src/Exceptions/WorldNotFoundException.cs @@ -1,24 +1,71 @@ -namespace VpSharp.Exceptions; +using VpSharp.Internal; + +namespace VpSharp.Exceptions; /// /// The exception that is thrown when an attempt to access a world does not exist. /// -public sealed class WorldNotFoundException : Exception +public sealed class WorldNotFoundException : VirtualParadiseException { - /// - public WorldNotFoundException() + /// + /// Initializes a new instance of the class. + /// + public WorldNotFoundException() : base(ReasonCode.WorldNotFound) { + WorldName = string.Empty; } - /// + /// + /// Initializes a new instance of the class. + /// + /// The name of the world that wasn't found. public WorldNotFoundException(string worldName) - : base($"No world with the name {worldName} was found.") + : this(worldName, $"No world with the name {worldName} was found.") { } - /// + /// + /// Initializes a new instance of the class. + /// + /// The name of the world that wasn't found. + /// + /// 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 WorldNotFoundException(string worldName, Exception innerException) - : base($"No world with the name {worldName} was found.", innerException) + : this(worldName, $"No world with the name {worldName} was found.", innerException) { } + + /// + /// Initializes a new instance of the class. + /// + /// The name of the world that wasn't found. + /// The message that describes the error. + public WorldNotFoundException(string worldName, string message) + : base(ReasonCode.WorldNotFound, message) + { + WorldName = worldName; + } + + /// + /// Initializes a new instance of the class. + /// + /// The name of the world that wasn't found. + /// The message that describes the error. + /// + /// 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 WorldNotFoundException(string worldName, string message, Exception innerException) + : base(ReasonCode.WorldNotFound, message, innerException) + { + WorldName = worldName; + } + + /// + /// Gets the name of the world that wasn't found. + /// + /// The name of the world that wasn't found. + public string WorldName { get; } }