"İlk şans istisnası" nedir?


Yanıtlar:


78

Bu bir hata ayıklama kavramı. Temelde istisnalar hata ayıklayıcı atılıyor ilk o ele almaması halinde bundan ayıklayıcıya bir atılan gerçek programa ve sonra ikinci size vererek zaman şans öncesi ve uygulamanın kendisi sonra IDE'nizde onunla bir şeyler yapmak. Bu bir Microsoft Visual Studio buluşu gibi görünüyor.


21
Bu bir hata ayıklama konseptinden daha fazlasıdır; C #, çalışma zamanında iki geçişli istisna işlemeyi gözlemlemek için uygun bir araç sağlamaz, ancak vb.net sağlar. Temel olarak, bir istisna atıldığında, herhangi birinin onu yakalayıp yakalayamayacağını bulmak için çağrı yığınını arayarak çalışma zamanı başlar. Bu işlem, herhangi bir blok çalışmadan önce gerçekleşir finally. Sistem kimin bir istisnayı yakalayacağına karar verdiğinde (ve birisinin gerçekten bunu yapacağını belirlediğinde), sistem yığını çözmeye başlayacaktır. Bir finallybloktan bir istisna atılırsa ...
supercat

18
... orijinal istisnayı yakalamayı bekleyen kod bunu yapmayabilir; birçok garip köşe vakası var.
supercat

5
Bu, hata ayıklayıcıyı atılan tüm istisnaları (yalnızca işlenmemiş istisnaları değil) kıracak şekilde yapılandırdığınızda veya atan bir ifadeye "adım attığınızda" olur. İletinin bkz türünün 'foo' Ilk şansını istisna YourApp.exe oluştu . Yine de devam edebilir (F5) veya bir adım daha ileri gidebilirsiniz (F11). Sonra bunun için bir varsa catch, kontrol oraya gider. Hiçbir yoksa catchblok, sen "ikinci şans" fırsatyaratmaya, bu kez mesajdır 'foo' YourApp.exe oluştu tür bir işlenmeyen özel durum . Buradan devam etmeye veya daha ileri gitmeye çalışmak başarılı olmayacaktır.
Jeppe Stig Nielsen

@supercat: Yukarıdaki yorumlarınızda belirttiğiniz gibi ayrıntıları nasıl öğrenebilirim? Kendi kendine deneyimin bir sonucu mu? kitap okumak (hangisi)? Bu çok etkileyici bir fikir! Lütfen cevaplamak için bir dakikanızı ayırırsanız çok sevinirim ...
anish

2
@NoSaidTheCompiler: Çeşitli bloglarda istisna işlemeyi okudum; "İstisna filtresi .net" aramasının konuyla ilgili bazı blogları açmasını bekliyorum.
supercat


4

Hata ayıklayıcıyı kullanmaya başladım ve bununla karşılaştım. Araştırmamda MSDN blog gönderisini buldum İlk Şans İstisnası Nedir?bu benim için durumu açıklığa kavuşturdu.

Blog gönderisinden benim için en büyük çıkarımlar, hata ayıklayıcıya yapılan bildirime atıfta bulunması ve kodumun mutlaka ele alması gereken bir şey olmaması ve en önemlisi, "İlk şans istisna mesajları çoğu zaman içinde bir sorun olduğu anlamına gelmez. kod. "


Lütfen bu bağlantıdan yararlı bulduğunuz şeylerden bir alıntı ( makalenin tamamı değil ) ekleyin. Sadece silinen aynı bağlantıya sahip daha önceki bir bağlantı yanıtı vardı.
Mark Hall

Benim için büyük çıkarımlar, hata ayıklayıcıya yapılan bildirime atıfta bulunması ve kodumun mutlaka ele alması gereken bir şey olmaması ve en önemlisi, "İlk şans istisna mesajları çoğu zaman kodda bir sorun olduğu anlamına gelmez."
kodlama gücü

Cevabınıza yorumunuzu ekledim, bağlantının etrafta kalmaya yetecek kadar önemli olduğunu hissediyorum, daha önce verildiği gibi sadece bir bağlantı cevabı olarak kabul edilmeyeceğinden emin olmaya çalışıyorum.
Mark Hall

0

Bir uygulamada hata ayıklandığında, bir istisna ile karşılaşıldığında hata ayıklayıcı bilgilendirilir. Bu noktada, uygulama askıya alınır ve hata ayıklayıcı istisnayı nasıl ele alacağına karar verir. Bu mekanizmadan ilk geçişe "ilk şans" istisnası denir.

Hata ayıklayıcının yapılandırmasına bağlı olarak, uygulamayı sürdürür ve istisnayı iletir veya uygulamayı askıya alır ve hata ayıklama moduna girer. Uygulama istisnayı işliyorsa, normal şekilde çalışmaya devam eder.

İlk şans istisna mesajları çoğu zaman kodda bir sorun olduğu anlamına gelmez. İstisnaları incelikle işleyen uygulamalar / bileşenler için, ilk şans istisna mesajları, geliştiricinin istisnai bir durumla karşılaşıldığını ve ele alındığını bilmesini sağlar.


0

Bir geliştiricinin bakış açısından, daha çok ikinci bir şans istisnası ile ilgilidir, çünkü kodla ele alınmadığı anlamına gelir ; bu nedenle uygulama duracaktır.

İlk şans bunların birçoğu olabilir, ancak yine geliştirme açısından daha fazla endişe duyanlar ikinci şanstır, çünkü bu bir uygulamanın çökmesine neden olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.