Вопрос

я пробежался по справочным документам MSDN, чтобы освоиться с Visual Basic.После опробования примера с использованием таймеров - one перетаскивает компонент label и timer в конструктор и добавляет следующее в подпрограмму components

Label1.Text = My.Computer.Clock.LocalTime.ToLongTimeString

Вывод для немедленного окна во время отладки следующий

Первое случайное исключение типа 'System.Возникло исключение InvalidCastException' в Microsoft.VisualBasic.dll
Первое случайное исключение типа 'System.Возникло исключение InvalidCastException' в Microsoft.VisualBasic.dll

Та же ошибка возникает в предыдущем примере MSDN с использованием компонента контекстного меню.Должен ли я Try...Catch...Finally эту ошибку и попытаться двигаться дальше?Или я имею дело с чем-то гораздо более серьезным?

Это было полезно?

Решение

Когда вы видите что-то об исключении первой случайности, это означает только то, что исключение было поймано в вызванном вами коде, но не обязательно означает, что код не удался.Если код выполняется без сбоев вашей программы и возвращает допустимое значение, то проблем нет.Вы также увидите выходные данные в окне отладки об исключениях первого шанса, когда вы реализуете свои собственные блоки try / catch.

Другие советы

В меню Debug -> Exceptions вы можете включить остановку отладчика при первом возникновении исключения, даже если оно будет перехвачено позже;если вы хотите выяснить, что происходит, это самый простой способ сделать это

В исключении первого шанса изучите детали исключения.Вы должны увидеть свойство stack frame / trace стека.Там вы должны увидеть, в какой строке возникает ошибка.Это должно вам помочь.

В IDE попробуйте перейти в Tools > Options > Projects and Solutions > VB Defaults и установить параметр Strict равным 'On' - это может помочь выявить проблемы с приведением при компиляции вашего проекта, а не при его запуске.

"Выполнение при первой возможности" не обязательно означает, что у вас есть проблема в вашем коде.Это может означать, что IDE, или компилятор, или любой другой задействованный компонент обнаружил и обработал ошибку, и в процессе отладчик получает уведомление, а сообщение об исключении выводится в окно immediate.Это отличный пост на эту тему:

http://blogs.msdn.com/davidklinems/archive/2005/07/12/438061.aspx

Быстрым и простым решением для отладки и диагностики исключения первой случайности является :

AppDomain.CurrentDomain.FirstChanceException += CurrentDomainOnFirstChanceException;

и тогда

private void CurrentDomainOnFirstChanceException(object sender, FirstChanceExceptionEventArgs firstChanceExceptionEventArgs)
    {
        if (firstChanceExceptionEventArgs.Exception is NullReferenceException)
        {
            // do your handling and debugging :)
        }
    }

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top