Исключение первого шанса - PullRequest
19 голосов
/ 07 января 2010

У меня есть проект, который отлично работает под Windows XP.

Теперь я попытался запустить его под Windows 7 и получил немало исключений под Немедленным окном.

A first chance exception of type 'System.ArgumentNullException' occurred in Microsoft.VisualBasic.dll
A first chance exception of type 'System.IO.FileNotFoundException' occurred in LP_Wizard.exe
A first chance exception of type 'System.ArgumentException' occurred in LP_Wizard.exe
A first chance exception of type 'System.NullReferenceException' occurred in LP_Wizard.exe
A first chance exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll
A first chance exception of type 'System.ArgumentNullException' occurred in Microsoft.VisualBasic.dll
A first chance exception of type 'System.IO.FileNotFoundException' occurred in LP_Wizard.exe
A first chance exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll
A first chance exception of type 'System.ArgumentNullException' occurred in Microsoft.VisualBasic.dll
A first chance exception of type 'System.IO.FileNotFoundException' occurred in LP_Wizard.exe
A first chance exception of type 'System.ArgumentNullException' occurred in Microsoft.VisualBasic.dll
A first chance exception of type 'System.IO.FileNotFoundException' occurred in LP_Wizard.exe

Есть идеи, что не так с этим Microsoft.VisualBasic.dll в Windows 7 и как я могу исправить эту проблему?

Большое спасибо за помощь.

Ответы [ 3 ]

56 голосов
/ 07 января 2010

Если вы хотите точно определить, где происходят исключения, вы можете выбрать пункт меню «Отладка-> Исключения» и в появившемся диалоговом окне установите первый флажок для «Общих исключений времени выполнения». Это приведет к разрыву отладчика, как только возникнет исключение, а не только к необработанным исключениям.

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

43 голосов
/ 07 января 2010

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

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

См. Вопрос " Избегание исключений первого случая, когда исключение безопасно обработано ", чтобы узнать о некоторых методах, чтобы уменьшить это, если их слишком много, чтобы игнорировать.

1 голос
/ 07 января 2010

Вы в отладчике? Являются ли эти исключения вашей программой? Если это так, вам нужно найти параметр, который говорит VB подавлять предупреждение об обработанных исключениях. Возможно, это было установлено при установке на XP, но не при установке на W7. Посмотрите, поможет ли это:

http://www.helixoft.com/blog/archives/24

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