/// <summary>Writes the exception message.</summary>
        private static string WriteMessage(ExtractHg3Result result, string file,
                                           Exception innerException = null, int memoryLeak = 0)
        {
            string name  = Path.GetFileName(file);
            string error = innerException?.GetType().Name ?? "Unknown Error";

            switch (result)
            {
            case ExtractHg3Result.Hg3ConvertFailed:
                return($"{error}  occurred while trying to convert '{name}' to a bmp!");

            case ExtractHg3Result.BmpConvertFailed:
                return($"{error} occurred while trying to convert '{name}' to a png!");

            case ExtractHg3Result.PngSaveFailed:
                return($"{error} occurred while trying to save '{name}'!");

            case ExtractHg3Result.BmpDeleteFailed:
                return($"{error} occurred while trying to delete leftover `{name}`!");

            case ExtractHg3Result.Unknown:
                return($"{error} occurred during an unknown point in the operation with '{name}'!");

            default:
                return("No error occurred.");
            }
        }
 /// <summary>Constructs the exception with a result, associated file, and inner
 /// exception.</summary>
 public ExtractHg3Exception(ExtractHg3Result result, string file,
                            Exception innerException)
     : base(WriteMessage(result, file, innerException), innerException)
 {
     State = result;
     File  = file;
 }