// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
#pragma once
#include "Engine/Core/Types/String.h"
#include "Engine/Core/Log.h"
#include "MTypes.h"
///
/// Represents errors that occur during script execution.
///
class FLAXENGINE_API MException
{
public:
///
/// Gets a message that describes the current exception.
///
String Message;
///
/// Gets a string representation of the immediate frames on the call stack.
///
String StackTrace;
///
/// Gets an inner exception. Null if not used.
///
MException* InnerException;
public:
///
/// Initializes a new instance of the class.
///
/// The exception object.
explicit MException(MObject* exception);
///
/// Disposes a instance of the class.
///
~MException();
public:
///
/// Sends exception to the log.
///
/// The log message type.
/// Execution target name.
void Log(const LogType type, const Char* target);
};