// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Runtime.InteropServices; using System.Threading; namespace FisheryLib.Utility.Diagnostics; /// /// Helper methods to efficiently throw exceptions. /// public static partial class ThrowHelper { /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowArrayTypeMismatchException() => throw new ArrayTypeMismatchException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowArrayTypeMismatchException(string? message) => throw new ArrayTypeMismatchException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowArrayTypeMismatchException(string? message, Exception? innerException) => throw new ArrayTypeMismatchException(message, innerException); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowArgumentException() => throw new ArgumentException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowArgumentException(string? message) => throw new ArgumentException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowArgumentException(string? message, Exception? innerException) => throw new ArgumentException(message, innerException); /// /// Throws a new . /// /// The argument name. /// The message to include in the exception. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowArgumentException(string? name, string? message) => throw new ArgumentException(message, name); /// /// Throws a new . /// /// The argument name. /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowArgumentException(string? name, string? message, Exception? innerException) => throw new ArgumentException(message, name, innerException); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowArgumentNullException() => throw new ArgumentNullException(); /// /// Throws a new . /// /// The argument name. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowArgumentNullException(string? name) => throw new ArgumentNullException(name); /// /// Throws a new . /// /// The argument name. /// The inner to include. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowArgumentNullException(string? name, Exception? innerException) => throw new ArgumentNullException(name, innerException); /// /// Throws a new . /// /// The argument name. /// The message to include in the exception. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowArgumentNullException(string? name, string? message) => throw new ArgumentNullException(name, message); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowArgumentOutOfRangeException() => throw new ArgumentOutOfRangeException(); /// /// Throws a new . /// /// The argument name. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowArgumentOutOfRangeException(string? name) => throw new ArgumentOutOfRangeException(name); /// /// Throws a new . /// /// The argument name. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowArgumentOutOfRangeException(string? name, Exception? innerException) => throw new ArgumentOutOfRangeException(name, innerException); /// /// Throws a new . /// /// The argument name. /// The message to include in the exception. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowArgumentOutOfRangeException(string? name, string? message) => throw new ArgumentOutOfRangeException(name, message); /// /// Throws a new . /// /// The argument name. /// The current argument value. /// The message to include in the exception. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowArgumentOutOfRangeException(string? name, object? value, string? message) => throw new ArgumentOutOfRangeException(name, value, message); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowCOMException() => throw new COMException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowCOMException(string? message) => throw new COMException(message); /// /// Throws a new . /// /// The argument name. /// The inner to include. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowCOMException(string? message, Exception? innerException) => throw new COMException(message, innerException); /// /// Throws a new . /// /// The argument name. /// The HRESULT of the error to include. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowCOMException(string? message, int error) => throw new COMException(message, error); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowExternalException() => throw new ExternalException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowExternalException(string? message) => throw new ExternalException(message); /// /// Throws a new . /// /// The argument name. /// The inner to include. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowExternalException(string? message, Exception? innerException) => throw new ExternalException(message, innerException); /// /// Throws a new . /// /// The argument name. /// The HRESULT of the error to include. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowExternalException(string? message, int error) => throw new ExternalException(message, error); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowFormatException() => throw new FormatException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowFormatException(string? message) => throw new FormatException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowFormatException(string? message, Exception? innerException) => throw new FormatException(message, innerException); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowInsufficientMemoryException() => throw new InsufficientMemoryException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowInsufficientMemoryException(string? message) => throw new InsufficientMemoryException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowInsufficientMemoryException(string? message, Exception? innerException) => throw new InsufficientMemoryException(message, innerException); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowInvalidDataException() => throw new InvalidDataException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowInvalidDataException(string? message) => throw new InvalidDataException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowInvalidDataException(string? message, Exception? innerException) => throw new InvalidDataException(message, innerException); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowInvalidOperationException() => throw new InvalidOperationException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowInvalidOperationException(string? message) => throw new InvalidOperationException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowInvalidOperationException(string? message, Exception? innerException) => throw new InvalidOperationException(message, innerException); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowLockRecursionException() => throw new LockRecursionException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowLockRecursionException(string? message) => throw new LockRecursionException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowLockRecursionException(string? message, Exception? innerException) => throw new LockRecursionException(message, innerException); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowMissingFieldException() => throw new MissingFieldException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowMissingFieldException(string? message) => throw new MissingFieldException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowMissingFieldException(string? message, Exception? innerException) => throw new MissingFieldException(message, innerException); /// /// Throws a new . /// /// The target class being inspected. /// The target field being retrieved. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowMissingFieldException(string? className, string? fieldName) => throw new MissingFieldException(className, fieldName); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowMissingMemberException() => throw new MissingMemberException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowMissingMemberException(string? message) => throw new MissingMemberException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowMissingMemberException(string? message, Exception? innerException) => throw new MissingMemberException(message, innerException); /// /// Throws a new . /// /// The target class being inspected. /// The target member being retrieved. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowMissingMemberException(string? className, string? memberName) => throw new MissingMemberException(className, memberName); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowMissingMethodException() => throw new MissingMethodException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowMissingMethodException(string? message) => throw new MissingMethodException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowMissingMethodException(string? message, Exception? innerException) => throw new MissingMethodException(message, innerException); /// /// Throws a new . /// /// The target class being inspected. /// The target method being retrieved. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowMissingMethodException(string? className, string? methodName) => throw new MissingMethodException(className, methodName); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowNotSupportedException() => throw new NotSupportedException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowNotSupportedException(string? message) => throw new NotSupportedException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowNotSupportedException(string? message, Exception? innerException) => throw new NotSupportedException(message, innerException); /// /// Throws a new . /// /// The name of the disposed object. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowObjectDisposedException(string? objectName) => throw new ObjectDisposedException(objectName); /// /// Throws a new . /// /// The name of the disposed object. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowObjectDisposedException(string? objectName, Exception? innerException) => throw new ObjectDisposedException(objectName, innerException); /// /// Throws a new . /// /// The name of the disposed object. /// The message to include in the exception. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowObjectDisposedException(string? objectName, string? message) => throw new ObjectDisposedException(objectName, message); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowOperationCanceledException() => throw new OperationCanceledException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowOperationCanceledException(string? message) => throw new OperationCanceledException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowOperationCanceledException(string? message, Exception? innerException) => throw new OperationCanceledException(message, innerException); /// /// Throws a new . /// /// The in use. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowOperationCanceledException(CancellationToken token) => throw new OperationCanceledException(token); /// /// Throws a new . /// /// The message to include in the exception. /// The in use. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowOperationCanceledException(string? message, CancellationToken token) => throw new OperationCanceledException(message, token); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// The in use. /// Thrown with the specified parameters. [DoesNotReturn] public static void ThrowOperationCanceledException(string? message, Exception? innerException, CancellationToken token) => throw new OperationCanceledException(message, innerException, token); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowPlatformNotSupportedException() => throw new PlatformNotSupportedException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowPlatformNotSupportedException(string? message) => throw new PlatformNotSupportedException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowPlatformNotSupportedException(string? message, Exception? innerException) => throw new PlatformNotSupportedException(message, innerException); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowSynchronizationLockException() => throw new SynchronizationLockException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowSynchronizationLockException(string? message) => throw new SynchronizationLockException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowSynchronizationLockException(string? message, Exception? innerException) => throw new SynchronizationLockException(message, innerException); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowTimeoutException() => throw new TimeoutException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowTimeoutException(string? message) => throw new TimeoutException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowTimeoutException(string? message, Exception? innerException) => throw new TimeoutException(message, innerException); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowUnauthorizedAccessException() => throw new UnauthorizedAccessException(); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowUnauthorizedAccessException(string? message) => throw new UnauthorizedAccessException(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowUnauthorizedAccessException(string? message, Exception? innerException) => throw new UnauthorizedAccessException(message, innerException); /// /// Throws a new . /// /// Thrown with no parameters. [DoesNotReturn] public static void ThrowWin32Exception() => throw new Win32Exception(); /// /// Throws a new . /// /// The Win32 error code associated with this exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowWin32Exception(int error) => throw new Win32Exception(error); /// /// Throws a new . /// /// The Win32 error code associated with this exception. /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowWin32Exception(int error, string? message) => throw new Win32Exception(error, message); /// /// Throws a new . /// /// The message to include in the exception. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowWin32Exception(string? message) => throw new Win32Exception(message); /// /// Throws a new . /// /// The message to include in the exception. /// The inner to include. /// Thrown with the specified parameter. [DoesNotReturn] public static void ThrowWin32Exception(string? message, Exception? innerException) => throw new Win32Exception(message, innerException); }