Visual C # - проблема необработанного исключения - PullRequest
0 голосов
/ 19 августа 2010

Хорошо, поэтому, основываясь на другом вопросе, который я задал о моей не запущенной программе, я пытаюсь вставить этот код в мою программу, которая, будем надеяться, укажет на любые необработанные исключения для меня. Однако, это не работает так, как я написал.

private void FileSort_Load(object sender, EventArgs e)
    {
        this.Size = new System.Drawing.Size(693, 603);
        this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Main_FormClosing);
        System.AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 
        //insert here anything that will occur on the program's start
    }

    void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        throw new NotImplementedException();
        // MessageBox.Show(e.ExceptionObject); //why doesn't this work?!?!?!?!?!?!?!?
    }

Так что моя проблема, очевидно, связана с функцией Messagebox.Show() в приведенном выше коде. Он говорит мне, что не может конвертировать из object в string. Я попытался использовать функцию ToString(), но это вызывает больше проблем. почему это не работает так, как есть? (Я получил это предложение в качестве ответа на другой мой вопрос, но я не слишком знаком с этим (поскольку я новичок в C # и ООП в целом), поэтому я не уверен, что сделал что-то не так, я просто дайте VS 2010 заполнить его для меня после ввода System.AppDomain.CurrentDomain.UnhandledException +=)

Любая помощь будет оценена.

Ответы [ 4 ]

4 голосов
/ 19 августа 2010

Это утверждение не будет достигнуто, так как сразу над ним есть бросок. Если поставить:

void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    MessageBox.Show(e.ExceptionObject.ToString());
    throw new NotImplementedException();
}

это может делать то, что вы хотите. Вам нужен ToString, потому что Show не принимает объект в качестве единственного параметра. Вы сказали, что это "больше проблем", но это слишком расплывчато, чтобы помочь.

0 голосов
/ 26 октября 2010

Вместо того, чтобы пытаться показать окно сообщения, вам, вероятно, следует записать в журнал событий Windows.Затем просто зарегистрируйте каждый шаг процесса, чтобы определить причину проблемы.

Эта ссылка может помочь вам.

0 голосов
/ 19 августа 2010

MessageBox.Show() принимает строку, а e.ExceptionObject является объектом согласно документации .

Вы можете попробовать это:

MessageBox.Show(e.ExceptionObject.ToString()); 
0 голосов
/ 19 августа 2010

(Предполагая, что вы прокомментируете исключение thow и раскомментируете строку, о которой идет речь, обычно вы не можете передать объект методу, который ожидает строку, поэтому вам нужно передать нужную строку в метод Show.*

Тогда возникает вопрос: какую строку вы хотите, чтобы она отображалась? Все исключения имеют свойство Message. Вероятно, это строка, которую вы хотите показать, поэтому измените код на

MessageBox.Show((Exception)(e.ExceptionObject).Message)

.делать то, что вы хотите? Если нет, вы можете объяснить, что именно вы хотите, чтобы это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...