diff --git a/src/modules/previewpane/SvgPreviewHandler/SvgPreviewControl.cs b/src/modules/previewpane/SvgPreviewHandler/SvgPreviewControl.cs
index 21db1eda68..779921d925 100644
--- a/src/modules/previewpane/SvgPreviewHandler/SvgPreviewControl.cs
+++ b/src/modules/previewpane/SvgPreviewHandler/SvgPreviewControl.cs
@@ -42,22 +42,37 @@ namespace Microsoft.PowerToys.PreviewHandler.Svg
/// Stream reference to access source file.
public override void DoPreview(T dataSource)
{
+ string svgData = null;
+ bool blocked = false;
+
+ try
+ {
+ using (var stream = new ReadonlyStream(dataSource as IStream))
+ {
+ using (var reader = new StreamReader(stream))
+ {
+ svgData = reader.ReadToEnd();
+ }
+ }
+
+ blocked = SvgPreviewHandlerHelper.CheckBlockedElements(svgData);
+ }
+#pragma warning disable CA1031 // Do not catch general exception types
+ catch (Exception ex)
+#pragma warning restore CA1031 // Do not catch general exception types
+ {
+ PreviewError(ex, dataSource);
+ return;
+ }
+
InvokeOnControlThread(() =>
{
try
{
_infoBarAdded = false;
- string svgData = null;
- using (var stream = new ReadonlyStream(dataSource as IStream))
- {
- using (var reader = new StreamReader(stream))
- {
- svgData = reader.ReadToEnd();
- }
- }
// Add a info bar on top of the Preview if any blocked element is present.
- if (SvgPreviewHandlerHelper.CheckBlockedElements(svgData))
+ if (blocked)
{
_infoBarAdded = true;
AddTextBoxControl(Resource.BlockedElementInfoText);
@@ -72,11 +87,7 @@ namespace Microsoft.PowerToys.PreviewHandler.Svg
catch (Exception ex)
#pragma warning restore CA1031 // Do not catch general exception types
{
- PowerToysTelemetry.Log.WriteEvent(new SvgFilePreviewError { Message = ex.Message });
- Controls.Clear();
- _infoBarAdded = true;
- AddTextBoxControl(Resource.SvgNotPreviewedError);
- base.DoPreview(dataSource);
+ PreviewError(ex, dataSource);
}
});
}
@@ -138,5 +149,19 @@ namespace Microsoft.PowerToys.PreviewHandler.Svg
_textBox.BorderStyle = BorderStyle.None;
Controls.Add(_textBox);
}
+
+ ///
+ /// Called when an error occurs during preview.
+ ///
+ /// The exception which occurred.
+ /// Stream reference to access source file.
+ private void PreviewError(Exception exception, T dataSource)
+ {
+ PowerToysTelemetry.Log.WriteEvent(new SvgFilePreviewError { Message = exception.Message });
+ Controls.Clear();
+ _infoBarAdded = true;
+ AddTextBoxControl(Resource.SvgNotPreviewedError);
+ base.DoPreview(dataSource);
+ }
}
}