//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// AFXUI auxiliary module for Blazor-application (WASM) | Author: Sergei Y.Kitáev
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
using System;
using System.Reflection;
using System.Runtime.CompilerServices;

using CommonHelpers.WASM;

namespace AFXUI {

//**************************************************************************************************
/// <summary>
/// Extended escape exception (with additional message)
/// </summary>
public class UEscapeExceptionEx: UEscapeException {
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/// <exception cref="ArgumentNullException" />
public UEscapeExceptionEx( Type throwingType, string additionalMessage,
                           [CallerMemberName][HRequired] string? methodNameOrSignature=null )
: base( throwingType.Name, HArgChecking.NN( methodNameOrSignature ), additionalMessage )
{}

/// <exception cref="ArgumentNullException" />
public UEscapeExceptionEx( [HRequired] MethodBase? throwingMethod, string additionalMessage )
: base( HArgChecking.NN(throwingMethod).DeclaringType.NN().Name,
        HArgChecking.NN(throwingMethod).Name, additionalMessage )
{}

//==================================================================================================

/// <exception cref="ArgumentNullException" />
protected UEscapeExceptionEx( string throwingTypeName, string additionalMessage,
                              [CallerMemberName][HRequired] string? methodNameOrSignature=null )
: base( throwingTypeName, HArgChecking.NN( methodNameOrSignature ), additionalMessage )
{}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
} // UEscapeExceptionEx
//**************************************************************************************************

} // AFXUI
