public override void HandleException(object provider, Exception exception) { if (provider is CodeFixProvider or FixAllProvider or CodeRefactoringProvider) { if (!IsIgnored(provider) && _globalOptions.GetOption(ExtensionManagerOptions.DisableCrashingExtensions)) { base.HandleException(provider, exception); var providerType = provider.GetType(); _errorReportingService?.ShowGlobalErrorInfo( message: string.Format(WorkspacesResources._0_encountered_an_error_and_has_been_disabled, providerType.Name), TelemetryFeatureName.GetExtensionName(providerType), exception, new InfoBarUI(WorkspacesResources.Show_Stack_Trace, InfoBarUI.UIKind.HyperLink, () => ShowDetailedErrorInfo(exception), closeAfterAction: false), new InfoBarUI(WorkspacesResources.Enable, InfoBarUI.UIKind.Button, () => { EnableProvider(provider); LogEnableProvider(provider); }), new InfoBarUI(WorkspacesResources.Enable_and_ignore_future_errors, InfoBarUI.UIKind.Button, () => { EnableProvider(provider); IgnoreProvider(provider); LogEnableAndIgnoreProvider(provider); }), new InfoBarUI(string.Empty, InfoBarUI.UIKind.Close, () => LogLeaveDisabled(provider))); } else { LogAction(CodefixInfobar_ErrorIgnored, provider); } }
public void ShowGlobalErrorInfo(string message, TelemetryFeatureName featureName, Exception?exception, params InfoBarUI[] items) { var stackTrace = exception is null ? "" : GetFormattedExceptionStack(exception); LogGlobalErrorToActivityLog(message, stackTrace); _infoBarService.ShowInfoBar(message, items); Logger.Log(FunctionId.VS_ErrorReportingService_ShowGlobalErrorInfo, KeyValueLogMessage.Create(LogType.UserAction, m => { m["Message"] = message; m["FeatureName"] = featureName.ToString(); })); }
public void ShowFeatureNotAvailableErrorInfo(string message, TelemetryFeatureName featureName, Exception?exception) { var infoBarUIs = new List <InfoBarUI>(); if (exception != null) { infoBarUIs.Add(new InfoBarUI( WorkspacesResources.Show_Stack_Trace, InfoBarUI.UIKind.HyperLink, () => ShowDetailedErrorInfo(exception), closeAfterAction: true)); } ShowGlobalErrorInfo(message, featureName, exception, infoBarUIs.ToArray()); }
public void ShowFeatureNotAvailableErrorInfo(string message, TelemetryFeatureName featureName, Exception?exception) { // telemetry has already been reported }
public void ShowGlobalErrorInfo(string message, TelemetryFeatureName featureName, Exception?exception, params InfoBarUI[] items) => Logger.Log(FunctionId.Extension_Exception, message);
public void ShowFeatureNotAvailableErrorInfo(string message, TelemetryFeatureName featureName, Exception?exception) => OnError($"{message} {exception}");
public void ShowGlobalErrorInfo(string message, TelemetryFeatureName featureName, Exception?exception, params InfoBarUI[] items) => OnError(message);