Example #1
0
            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);
                    }
                }
Example #2
0
        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();
            }));
        }
Example #3
0
        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());
        }
Example #4
0
 public void ShowFeatureNotAvailableErrorInfo(string message, TelemetryFeatureName featureName, Exception?exception)
 {
     // telemetry has already been reported
 }
Example #5
0
 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);