Когда может исключение в приложении WinForms.NET просто быть съеденными, не будучи пойманным или пузырясь до исключения окон?

Вы не можете использовать SparkSession в коде на стороне исполнителя (то есть в цикле dist_df.foreach), в этом случае Spark Session является нулевым (он живет только в драйвере)

5
задан Davy8 28 January 2009 в 21:23
поделиться

6 ответов

Найденный одним местом, где это могло произойти, то, если существует исключение в обработчике событий UnhandledException. Простой способ видеть это является этим: В Форме. Загрузитесь обработчик событий выдают любое старое исключение. В Приложении. Событие ThreadException поместило что-то подобное следующему:

static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
     string b = null;
     int i = b.Length;
}

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

1
ответ дан 15 December 2019 в 06:36
поделиться

Существуют некоторые специальные исключения, которые не добираются, пузырился или поймал, это кажется, что Вы имеете дело с одним из них: посмотрите ThreadAbortException

2
ответ дан 15 December 2019 в 06:36
поделиться

При попытке изменить свойства управления Windows Form от другого потока, управление было создано в, Вы получаете InvalidOperationException, если существует присоединенный отладчик, но это тихо проигнорировано иначе.

Больше информации о проблеме может быть найдено здесь:

http://msdn.microsoft.com/en-us/library/ms171728 (По сравнению с 80) .aspx

0
ответ дан 15 December 2019 в 06:36
поделиться

Ваш код вызывается от платформы.

Иногда, платформа переносит свои вызовы в обработчик исключений.

Так, если существует исключение в Вашем коде, это может быть (если существует обработчик исключений там в платформе), пойманный и проигнорированный платформой.

Возможно, отладчик показывает его как "необработанный" потому что, хотя существует обработчик в платформе, в Вашем коде нет никакого обработчика? Или, потому что существует что-то странное об обработчике в платформе, например, что это - неуправляемый, структурированный обработчик исключений?

0
ответ дан 15 December 2019 в 06:36
поделиться

Вы используете.Net 1.0/1.1? Было огромное изменение в поведении в переходе от 1,1 до 2,0. К тому времени исключения повысили на потоках, которые Вы создали, или потоки ThreadPool будет глотать тихо frameworok, и поток вышел бы. К счастью это поведение было теперь зафиксировано.

Из MSDN:

Изменение от предыдущих версий

Старшее значащее изменение принадлежит управляемым потокам. В версиях 1.0 и 1.1 Платформы.NET общеязыковая среда выполнения обеспечивает поддержку для необработанных исключений в следующих ситуациях:

  • Нет такой вещи как необработанное исключение на потоке пула потоков. Когда задача выдает исключение, которое она не обрабатывает, время выполнения печатает отслеживание стека исключительной ситуации к консоли и затем возвращает поток пулу потоков.

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

  • Нет такой вещи как необработанное исключение на потоке финализатора. Когда финализатор выдает исключение, которое он не обрабатывает, время выполнения печатает отслеживание стека исключительной ситуации к консоли и затем позволяет потоку финализатора возобновлять рабочие финализаторы.

0
ответ дан 15 December 2019 в 06:36
поделиться

Здесь вроде как растягивается, но не может ли быть так, что вы просто поставили отладчик на разрыв, когда выбрасывается исключение, а не только для неуправляемых?

0
ответ дан 15 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

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