AppDomain. CurrentDomain. UnhandledException, не стреляя без отладки

Я на самом деле когда-то продвинул с --force и .git репозиторий и ругался достижением Linus . В целом это создаст много проблем для других людей. Простой ответ, "Не делают этого".

я вижу, что другие дали рецепт для того, чтобы сделать так так или иначе, таким образом, я не повторю их здесь. Но вот подсказка для восстановления с ситуации после , Вы выставили исправленную фиксацию с - сила (или +master).

  1. Использование git reflog для нахождения старой фиксации, которую Вы исправили (называют его old, и мы назовем новую фиксацию Вами созданный путем исправления new).
  2. Создают слияние между old и new, записывая дерево new, как git checkout new && git merge -s ours old.
  3. Слияние, что Вашему ведущему устройству с git merge master
  4. Обновление Ваше ведущее устройство с результатом с [1 110]
  5. Выставляют результат.

Затем люди, которые были достаточно неудачны основывать их работу над фиксацией Вы стертый путем исправления и принуждения нажатия, будут видеть, что получающееся слияние будет видеть, что Вы одобряете new более чем [1 112]. Их более поздние слияния не будут видеть конфликты между [1 113] и new, который следовал из Вашего исправления, таким образом, они не должны страдать.

14
задан AndyGeek 19 August 2009 в 14:23
поделиться

2 ответа

Я предполагаю, что вы не установили правильный режим обработки исключений с помощью Application.SetUnhandledExceptionMode () - просто установите его на UnhandledExceptionMode.ThrowException .

. ] ОБНОВЛЕНИЕ

Я только что написал небольшое тестовое приложение и не нашел ничего неожиданного. Не могли бы вы воспроизвести свою ошибку с помощью этого тестового кода?

using System;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;

namespace ConsoleApplication
{
    public static class Program
    {
        static void Main()
        {
            AppDomain.CurrentDomain.UnhandledException += AppDomain_UnhandledException;

            Application.ThreadException += Application_ThreadException;
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

            Application.Run(new TestForm());

            throw new Exception("Main");
        }

        static void Application_ThreadException(Object sender, ThreadExceptionEventArgs e)
        {
            MessageBox.Show(e.Exception.Message, "Application.ThreadException");
        }

        static void AppDomain_UnhandledException(Object sender, UnhandledExceptionEventArgs e)
        {
            MessageBox.Show(((Exception)e.ExceptionObject).Message, "AppDomain.UnhandledException");
        }
    }

    public class TestForm : Form
    {
        public TestForm()
        {
            this.Text = "Test Application";
            this.ClientSize = new Size(200, 60);
            this.MinimumSize = this.Size;
            this.MaximumSize = this.Size;
            this.StartPosition = FormStartPosition.CenterScreen;

            Button btnThrowException = new Button();

            btnThrowException.Text = "Throw";
            btnThrowException.Location = new Point(0, 0);
            btnThrowException.Size = new Size(200, 30);
            btnThrowException.Click += (s, e) => { throw new Exception("Throw"); };

            Button btnThrowExceptionOnOtherThread = new Button();

            btnThrowExceptionOnOtherThread.Text = "Throw on other thread";
            btnThrowExceptionOnOtherThread.Location = new Point(0, 30);
            btnThrowExceptionOnOtherThread.Size = new Size(200, 30);
            btnThrowExceptionOnOtherThread.Click += (s, e) => new Thread(() => { throw new Exception("Other thread"); }).Start();

            this.Controls.Add(btnThrowException);
            this.Controls.Add(btnThrowExceptionOnOtherThread);
        }
    }
}
16
ответ дан 1 December 2019 в 13:59
поделиться

Может быть, исключение выбрасывается в отдельном потоке вашего приложения. Мы видели проблему, когда приложение просто «останавливается» (что означает: в одну секунду оно там, а вторую - уходит), когда в потоке возникает необработанное исключение. В этом случае не запускался даже обработчик необработанных исключений.

0
ответ дан 1 December 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: