Skip to content

Commit

Permalink
Improved the generic exception catcher to dump InnerExceptions. Shrun…
Browse files Browse the repository at this point in the history
…k the footprint of the console logging messages. Added more exception handling.
  • Loading branch information
tstavropoulos committed Jul 10, 2018
1 parent 69b12a0 commit ddab84c
Show file tree
Hide file tree
Showing 3 changed files with 113 additions and 87 deletions.
70 changes: 26 additions & 44 deletions MusicPlayer/Core/FileManager/FileManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public sealed partial class FileManager : IDisposable

private readonly List<string> supportedFileTypes = new List<string>() { "*.mp3", "*.flac", "*.ogg" };
private readonly string[] songNameDelimiter = new string[] { " - " };
private readonly string consoleDiv = "---------------------------------------";

#region RegEx

Expand Down Expand Up @@ -114,7 +115,7 @@ private class Lookups
public FileManager()
{
db = new MusegicianData();

db.Database.CreateIfNotExists();

recordingCommands = new RecordingCommands(db);
Expand Down Expand Up @@ -647,38 +648,37 @@ private void PopulateLookups(Lookups lookups)
}
catch (TagLib.UnsupportedFormatException)
{
Console.WriteLine($"Skipping UNSUPPORTED FILE: {path}");
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping UNSUPPORTED FILE: {path}\n");
return;
}
catch (TagLib.CorruptFileException)
{
Console.WriteLine($"Skipping CORRUPT FILE: {path}");
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping CORRUPT FILE: {path}\n");
return;
}
catch (IOException)
{
Console.WriteLine($"Skipping Writing Tag To FILE IN USE: {path}");
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping Writing Tag To FILE IN USE: {path}\n");
return;
}
catch (Exception excp)
catch (Exception e)
{
Console.WriteLine($"Unanticipated Exception for file: {path}");
Console.WriteLine(excp.Message);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Exception excp = e;
StringBuilder errorMessage = new StringBuilder();
while (excp != null)
{
errorMessage.Append(excp.Message);
excp = excp.InnerException;
if (excp != null)
{
errorMessage.Append("\n\t");
}
}
Console.WriteLine(
$"{consoleDiv}\nUnanticipated Exception for file: {path}\n{errorMessage.ToString()}\n");

System.Windows.MessageBox.Show(
messageBoxText: $"Unanticipated Exception for file: {path}\n{excp.Message}",
messageBoxText: $"Unanticipated Exception for file: {path}\n{consoleDiv}\n{errorMessage.ToString()}",
caption: "Unanticipated Exception");
return;
}
Expand Down Expand Up @@ -1099,26 +1099,17 @@ private static bool CleanUpAlbumTitle(string loadedTitle, out string cleanAlbumT
}
catch (TagLib.UnsupportedFormatException)
{
Console.WriteLine("Skipping UNSUPPORTED FILE: " + recording.Filename);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping UNSUPPORTED FILE: {recording.Filename}\n");
continue;
}
catch (TagLib.CorruptFileException)
{
Console.WriteLine("Skipping CORRUPT FILE: " + recording.Filename);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping CORRUPT FILE: {recording.Filename}\n");
continue;
}
catch (IOException)
{
Console.WriteLine("Skipping FILE IN USE: " + recording.Filename);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping Writing Tag To FILE IN USE: {recording.Filename}\n");
continue;
}
}
Expand Down Expand Up @@ -1226,26 +1217,17 @@ private static bool CleanUpAlbumTitle(string loadedTitle, out string cleanAlbumT
}
catch (TagLib.UnsupportedFormatException)
{
Console.WriteLine("Skipping UNSUPPORTED FILE: " + recording.Filename);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping UNSUPPORTED FILE: {recording.Filename}\n");
continue;
}
catch (TagLib.CorruptFileException)
{
Console.WriteLine("Skipping CORRUPT FILE: " + recording.Filename);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping CORRUPT FILE: {recording.Filename}\n");
continue;
}
catch (IOException)
{
Console.WriteLine("Skipping FILE IN USE: " + recording.Filename);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping Writing Tag To FILE IN USE: {recording.Filename}\n");
continue;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

using LoadingUpdater = Musegician.LoadingDialog.LoadingDialog.LoadingUpdater;
using Stopwatch = System.Diagnostics.Stopwatch;
using System.Text;

namespace Musegician
{
Expand Down Expand Up @@ -36,7 +37,7 @@ IEnumerable<string> IPrivateTagCleanupRequestHandler.GetAllPrivateTagOwners(Load
updater.SetSubtitle($"Scanning Recording Tags... ({i}/{count})");
stopwatch.Restart();
}

try
{
using (TagLib.File file = TagLib.File.Create(recording.Filename))
Expand All @@ -55,26 +56,33 @@ IEnumerable<string> IPrivateTagCleanupRequestHandler.GetAllPrivateTagOwners(Load
}
catch (TagLib.UnsupportedFormatException)
{
Console.WriteLine("Skipping UNSUPPORTED FILE: " + recording.Filename);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping UNSUPPORTED FILE: {recording.Filename}\n");
continue;
}
catch (TagLib.CorruptFileException)
{
Console.WriteLine("Skipping CORRUPT FILE: " + recording.Filename);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping CORRUPT FILE: {recording.Filename}\n");
continue;
}
catch (IOException)
catch (Exception e)
{
Console.WriteLine("Skipping FILE IN USE: " + recording.Filename);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Exception excp = e;
StringBuilder errorMessage = new StringBuilder();
while (excp != null)
{
errorMessage.Append(excp.Message);
excp = excp.InnerException;
if (excp != null)
{
errorMessage.Append("\n\t");
}
}
Console.WriteLine(
$"{consoleDiv}\nUnanticipated Exception for file: {recording.Filename}\n{errorMessage.ToString()}\n");

System.Windows.MessageBox.Show(
messageBoxText: $"Unanticipated Exception for file: {recording.Filename}\n{consoleDiv}\n{errorMessage.ToString()}",
caption: "Unanticipated Exception");
continue;
}
}
Expand Down Expand Up @@ -145,26 +153,38 @@ IEnumerable<string> IPrivateTagCleanupRequestHandler.GetAllPrivateTagOwners(Load
}
catch (TagLib.UnsupportedFormatException)
{
Console.WriteLine("Skipping UNSUPPORTED FILE: " + recording.Filename);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping UNSUPPORTED FILE: {recording.Filename}\n");
continue;
}
catch (TagLib.CorruptFileException)
{
Console.WriteLine("Skipping CORRUPT FILE: " + recording.Filename);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping CORRUPT FILE: {recording.Filename}\n");
continue;
}
catch (IOException)
{
Console.WriteLine("Skipping FILE IN USE: " + recording.Filename);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping Writing Tag To FILE IN USE: {recording.Filename}\n");
continue;
}
catch (Exception e)
{
Exception excp = e;
StringBuilder errorMessage = new StringBuilder();
while (excp != null)
{
errorMessage.Append(excp.Message);
excp = excp.InnerException;
if (excp != null)
{
errorMessage.Append("\n\t");
}
}
Console.WriteLine(
$"{consoleDiv}\nUnanticipated Exception for file: {recording.Filename}\n{errorMessage.ToString()}\n");

System.Windows.MessageBox.Show(
messageBoxText: $"Unanticipated Exception for file: {recording.Filename}\n{consoleDiv}\n{errorMessage.ToString()}",
caption: "Unanticipated Exception");
continue;
}
}
Expand Down
58 changes: 41 additions & 17 deletions MusicPlayer/TagEditor/TagEditor.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@ public enum ID3TagType
/// </summary>
public partial class TagEditor : Window
{
#region Data

private readonly string consoleDiv = "---------------------------------------";

#endregion Data

private IEnumerable<BaseData> Data { get; }
public IEnumerable<TagData> Tags { get; }

Expand Down Expand Up @@ -124,36 +130,54 @@ private void Click_Apply(object sender, RoutedEventArgs e)

foreach (string path in paths)
{
TagLib.File file = null;

try
{
file = TagLib.File.Create(path);
file.Mode = TagLib.File.AccessMode.Write;
using (TagLib.File file = TagLib.File.Create(path))
{

file.Mode = TagLib.File.AccessMode.Write;

UpdateTags(file, Tags);

file.Save();
}
}
catch (TagLib.UnsupportedFormatException)
{
Console.WriteLine("UNSUPPORTED FILE: " + path);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping UNSUPPORTED FILE: {path}\n");
continue;
}
catch (TagLib.CorruptFileException)
{
Console.WriteLine($"{consoleDiv}\nSkipping CORRUPT FILE: {path}\n");
continue;
}
catch (System.IO.IOException)
{
file.Mode = TagLib.File.AccessMode.Closed;
file.Dispose();
Console.WriteLine("FILE IN USE: " + path);
Console.WriteLine("SKIPPING");
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
Console.WriteLine($"{consoleDiv}\nSkipping Writing Tag To FILE IN USE: {path}\n");
continue;
}
catch (Exception ex)
{
Exception excp = ex;
StringBuilder errorMessage = new StringBuilder();
while (excp != null)
{
errorMessage.Append(excp.Message);
excp = excp.InnerException;
if (excp != null)
{
errorMessage.Append("\n\t");
}
}

UpdateTags(file, Tags);
Console.WriteLine($"{consoleDiv}\nUnanticipated Exception for file: {path}\n{errorMessage.ToString()}\n");

file.Save();
MessageBox.Show(
messageBoxText: $"Unanticipated Exception for file: {path}\n{consoleDiv}\n{errorMessage.ToString()}",
caption: "Unanticipated Exception");
continue;
}
}
}
}
Expand Down

0 comments on commit ddab84c

Please sign in to comment.