У меня есть проект, который работает прекрасный под Windows XP.
Теперь я попытался выполнить его в соответствии с Windows 7 и получил там много исключений под окном Immediate.
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
в окнах 7 и как я исправляю ту проблему?
Большое спасибо за справку.
Происходит то, что отладчик "видит" исключения, как только они поднимаются (отсюда и "первый шанс") перед попаданием любого блока catch
. Любое исключение, которое не обработано блоком catch
, считается исключением "второго шанса" и будет нормально нарушено.
Если эти исключения не останавливают запуск вашего приложения из-за того, что они не обработаны, то, скорее всего, вы в порядке. Большую часть времени исключение обрабатывается кодом и это не проблема. Выводом является просто Visual Studio, сообщающий вам, что были подняты исключения.
Смотрите вопрос "Avoiding first chance exception messages when the exception is safe handled" для некоторых методов, чтобы уменьшить это, если их слишком много, чтобы их можно было игнорировать.
.Если вы хотите точно определить, где происходят исключения, выберите пункт меню Debug->Exceptions, и в появившемся диалоге установите первый флажок "Common Language Runtime Exceptions" (Исключения во время выполнения на общем языке). Это заставит отладчик ломаться, как только происходит исключение, вместо того, чтобы ломаться только на необработанных исключениях.
Это также одна из причин, по которой обычно плохая идея ловить общие исключения, если только вы явно не протоколируете пойманную информацию.
.Ты в отладчике? Обрабатываются ли эти исключения вашей программой? Если да, то вам нужно найти настройку, которая говорит VB подавлять предупреждения об обрабатываемых исключениях. Может быть, эта настройка была установлена при установке на XP, но не при установке на W7. Посмотрим, поможет ли это: