diff --git a/aegisub/src/dialog_progress.cpp b/aegisub/src/dialog_progress.cpp
index 649e92c361251b63276f0c31bb78b0922fbd50a5..a9655b45b61d0fabfd2267df7b98a41ad79ff1f0 100644
--- a/aegisub/src/dialog_progress.cpp
+++ b/aegisub/src/dialog_progress.cpp
@@ -111,7 +111,12 @@ public:
 	}
 
 	wxThread::ExitCode Entry() {
-		task(ps);
+		try {
+			task(ps);
+		}
+		catch (agi::Exception const& e) {
+			ps->Log(e.GetChainedMessage());
+		}
 		wxQueueEvent(dialog, new wxThreadEvent(EVT_COMPLETE));
 		return 0;
 	}