Torres156_Lun-Library/Lun/SFML/LoadingFailedException.cs
using System;
using System.Runtime.Serialization;

namespace Lun.SFML
{
    ////////////////////////////////////////////////////////////
    /// <summary>
    /// Exception thrown by SFML whenever loading a resource fails
    /// </summary>
    ////////////////////////////////////////////////////////////
    [Serializable]
    public class LoadingFailedException : Exception
    {
        ////////////////////////////////////////////////////////////
        /// <summary>
        /// Default constructor (unknown error)
        /// </summary>
        ////////////////////////////////////////////////////////////
        public LoadingFailedException() : base("Failed to load a resource") { }

        ////////////////////////////////////////////////////////////
        /// <summary>
        /// Failure to load a resource from memory
        /// </summary>
        /// <param name="resourceName">Name of the resource</param>
        ////////////////////////////////////////////////////////////
        public LoadingFailedException(string resourceName) : base($"Failed to load {resourceName} from memory")
        {
        }

        ////////////////////////////////////////////////////////////
        /// <summary>
        /// Failure to load a resource from memory
        /// </summary>
        /// <param name="resourceName">Name of the resource</param>
        /// <param name="innerException">Exception which is the cause ofthe current exception</param>
        ////////////////////////////////////////////////////////////
        public LoadingFailedException(string resourceName, Exception innerException) :
            base($"Failed to load {resourceName} from memory", innerException)
        {
        }

        ////////////////////////////////////////////////////////////
        /// <summary>
        /// Failure to load a resource from a file
        /// </summary>
        /// <param name="resourceName">Name of the resource</param>
        /// <param name="filename">Path of the file</param>
        ////////////////////////////////////////////////////////////
        public LoadingFailedException(string resourceName, string filename) :
            base($"Failed to load {resourceName} from file {filename}")
        {
        }

        ////////////////////////////////////////////////////////////
        /// <summary>
        /// Failure to load a resource from a file
        /// </summary>
        /// <param name="resourceName">Name of the resource</param>
        /// <param name="filename">Path of the file</param>
        /// <param name="innerException">Exception which is the cause ofthe current exception</param>
        ////////////////////////////////////////////////////////////
        public LoadingFailedException(string resourceName, string filename, Exception innerException) :
            base($"Failed to load {resourceName} from file {filename}", innerException)
        {
        }

        ////////////////////////////////////////////////////////////
        /// <summary>
        /// Initialize an instance of the exception with serialized data
        /// </summary>
        /// <param name="info">Serialized data</param>
        /// <param name="context">Contextual informations</param>
        ////////////////////////////////////////////////////////////
        public LoadingFailedException(SerializationInfo info, StreamingContext context) :
            base(info, context)
        {
        }
    }
}
