diff --git a/src/EditorFeatures/Core.Wpf/QuickInfo/LazyToolTip.cs b/src/EditorFeatures/Core.Wpf/QuickInfo/LazyToolTip.cs index be92e32cd5915..e79e7b06eb3f8 100644 --- a/src/EditorFeatures/Core.Wpf/QuickInfo/LazyToolTip.cs +++ b/src/EditorFeatures/Core.Wpf/QuickInfo/LazyToolTip.cs @@ -9,6 +9,7 @@ using System.Windows; using System.Windows.Controls; using Microsoft.CodeAnalysis.Editor.Shared.Utilities; +using Microsoft.CodeAnalysis.ErrorReporting; namespace Microsoft.CodeAnalysis.Editor.QuickInfo { @@ -50,26 +51,40 @@ public static void AttachTo(FrameworkElement element, IThreadingContext threadin private void OnToolTipOpening(object sender, ToolTipEventArgs e) { - AssertIsForeground(); + try + { + AssertIsForeground(); - Debug.Assert(_element.ToolTip == this); - Debug.Assert(_disposableToolTip == null); + Debug.Assert(_element.ToolTip == this); + Debug.Assert(_disposableToolTip == null); - _disposableToolTip = _createToolTip(); - _element.ToolTip = _disposableToolTip.ToolTip; + _disposableToolTip = _createToolTip(); + _element.ToolTip = _disposableToolTip.ToolTip; + } + catch (Exception ex) when (FatalError.ReportAndCatch(ex)) + { + // Do nothing, since this is a WPF event handler and propagating the exception would cause a crash + } } private void OnToolTipClosing(object sender, ToolTipEventArgs e) { - AssertIsForeground(); + try + { + AssertIsForeground(); - Debug.Assert(_disposableToolTip != null); - Debug.Assert(_element.ToolTip == _disposableToolTip.ToolTip); + Debug.Assert(_disposableToolTip != null); + Debug.Assert(_element.ToolTip == _disposableToolTip.ToolTip); - _element.ToolTip = this; + _element.ToolTip = this; - _disposableToolTip.Dispose(); - _disposableToolTip = null; + _disposableToolTip.Dispose(); + _disposableToolTip = null; + } + catch (Exception ex) when (FatalError.ReportAndCatch(ex)) + { + // Do nothing, since this is a WPF event handler and propagating the exception would cause a crash + } } } }