SORU
8 ŞUBAT 2011, Salı


VS2010 Windows'un 64-bit bir sürümünü Win bir Uygulama işlenmeyen bir özel durum iletisi göstermez

Yeni bir proje oluşturduğumda, işlenmeyen özel durumlar için garip bir davranış. Bu sorunu nasıl yeniden üretebilir

1) yeni bir Windows Forms Uygulaması oluşturun (#, C .NET Çerçeve 4, VS2010)

2) Form1_Load işleyici için aşağıdaki kodu ekleyin:

int vara = 5, varb = 0;
int varc = vara / varb;
int vard = 7;

VS ve ikinci sırada işlenmeyen bir özel durum iletisi sonları gösteren beklerdim. Ancak, ne üçüncü satırda herhangi bir mesaj olmadan atlanır ve uygulamanın çalışmasını sağlar.

Benim mevcut C ile bu sorun yok# projeleri. Yeni projelerimi biraz garip varsayılan ayarlar ile oluşturulan, bu yüzden sanırım.

Herkes projemde sorun nedir bir fikrin var mı???

Kutuları kontrol hata Ayıklama -^ denedim . Özel durumlar. Ama sonra infaz try-catch a Blok; istediğim şey de değil bu durum yapsam bile keser. Eğer yanlış hatırlamıyorsam, bir sütun vardı, "istisnalar istiyorum" ya da bunun gibi bir şey yapar ki bu iletişim kutusunda, ama tam bir. işlenmemiş Ama benim projelerde sadece bir tek sütun var ("") Oluşturuldu.

CEVAP
8 ŞUBAT 2011, Salı


Bu çok kötü bir sorun, 32-bit Windows 64-bit sürümü çalıştırmak için izin veren bir Windows wow64 öykünme katman tarafından sağlanır. Load olaya kodu istisnalar yutar. Onu görüp hata önleme ve adım adım ilerlemek. Bu görünüşte zor düzeltmek için, Microsoft Windows ve DevDiv gruplar ileri geri parmak işaret ediyor. DevDiv bu konuda bir şey yapamam, Windows gizemli sesler olarak doğru davranış olduğunu düşünüyor. Sadece bir hata ayıklayıcı, kod her zamanki gibi biri olmadan bombalayacak bağlı olan bir sorundur.

Proje Özellikleri, sekme Oluşturmak, Platform hedef AnyCPU değiştirin. Ne yazık ki bu Düzenleme VS2013 önce VS sürümleri için Devam devre dışı bırakır ve her zaman 32-bit kodu, bağımlı olduğunuz zaman mümkün olmayabilir.

Diğer Olası çözümler:

  • Hata ayıklama özel, CLR özel durumlar için Atılan bu kutuyu işaretleyin.
  • /Catch deneyin Load olay işleyicisi yazın.
  • İleti döngüsü içinde istisna tuzak hata ayıklama modunda devre dışı değil ki Main() yöntem Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException) kullanın. Bu ayar ancak tüm işlenmeyen özel durum hata ayıklama için daha da zorlaştırıyor, ThreadException olay oldukça işe yaramaz.
  • Eğer gerçekten kod Load olay işleyicisi ait olup olmadığını düşünün. Çok nadir Load büyük bir anlaşma olduğu VB6 programcılar ile ancak popüler lazım. Sadece kullanıcı tercihleri sonra gerçek bir pencere boyutu ilgilendi ne zaman Load ihtiyaç ve autoscaling uygulanır. Her şey kurucu aittir.
  • Windows için bu sorun yok 8, güncelleştirme.

İyi şeyler yazın bu sorun hakkında blog post Bu mevcuttur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • martin shervington

    martin sherv

    7 EKİM 2011
  • oHeymarvin

    oHeymarvin

    11 Temmuz 2013
  • Vsauce

    Vsauce

    30 Temmuz 2007

İLGİLİ SORU / CEVAPLAR