Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Özel durum, bir program yürütülürken oluşan bir hata durumunun göstergesidir. Hata ayıklayıcıya hangi özel durumların veya özel durum kümelerinin kesileceğini ve hata ayıklayıcının hangi noktada kesmesini istediğinizi (hata ayıklayıcıda duraklatma) belirtebilirsiniz. Hata ayıklayıcı durdurulduğunda, istisnanın nerede atıldığını gösterir. Ayrıca özel durumlar ekleyebilir veya silebilirsiniz. Visual Studio'da açık olan bir çözümle, > penceresini açmak için Windows > Özel Durum Ayarlarında Hata Ayıklama'yı kullanın.
En önemli özel durumlara yanıt veren işleyiciler sağlayın. Özel durumlar için işleyicilerin nasıl ekleneceğini bilmeniz gerekiyorsa bkz. Daha iyi C# kodu yazarak hataları düzeltme. Ayrıca, hata ayıklayıcısını bazı özel durumlar için yürütmeyi her zaman kesecek şekilde yapılandırmayı öğrenin.
Bir özel durum oluştuğunda, hata ayıklayıcı Çıkış penceresine bir özel durum iletisi yazar. Aşağıdaki durumlarda yürütme kesilebilir:
- İşlenmeyen bir özel durum fırlatılır.
- Hata ayıklayıcısı, herhangi bir işleyici çağrılmadan önce yürütmeyi kesecek şekilde yapılandırılır.
- Yalnızca Benim Kodum'u ayarladınız ve hata ayıklayıcıyı, kullanıcı kodunda işlenmemiş herhangi bir istisna durumunda duracak şekilde yapılandırdınız.
Uyarı
ASP.NET, tarayıcıda hata sayfalarını gösteren üst düzey bir özel durum işleyicisi vardır. Yalnızca Kodum açık olmadığı sürece yürütmeyi bozmaz. Örnek için aşağıdaki Hata ayıklayıcıya kullanıcı tarafından işlenmeyen özel durumlara devam etmelerini söyleme bölümüne bakın.
Uyarı
Bir Visual Basic uygulamasında, hata ayıklayıcısı, On Error tarzı hata işleyicilerinde kullansanız bile tüm hataları özel durum olarak yönetir.
Özel durum oluştuğunda hata ayıklayıcıya kesmesini söyleyin
Hata ayıklayıcı, bir özel durumun oluştuğu noktada yürütmeyi kesebilir, bu nedenle bir işleyici çağrılmadan önce özel durumu inceleyebilirsiniz.
Özel Durum Ayarları penceresinde (Windows > Özel Durum Ayarlarında Hata Ayıkla>), Ortak Dil Çalışma Zamanı Özel Durumları gibi bir özel durum kategorisinin düğümünü genişletin. Ardından bu kategorideki system.AccessViolationException gibi belirli bir özel durumun onay kutusunu seçin. Özel durumlar kategorisinin tamamını da seçebilirsiniz.
Tip
Özel Durum Ayarları araç çubuğundaki Arama penceresini kullanarak belirli özel durumları bulabilir veya belirli ad alanlarını (System.IO gibi) filtrelemek için aramayı kullanabilirsiniz.
Özel Durum Ayarları penceresinde bir özel durum seçerseniz, işlenip işlenmediği fark etmez, özel durumun oluştuğu her yerde hata ayıklayıcı yürütmesi bozulacaktır. Şimdi özel durum, ilk şans özel durumu olarak adlandırılır. Örneğin, birkaç senaryo aşağıda verilmiştir:
Aşağıdaki C# konsol uygulamasında Main yöntemi bir bloğu içerisinde
try/catchfırlatır.static void Main(string[] args) { try { throw new AccessViolationException(); Console.WriteLine("here"); } catch (Exception e) { Console.WriteLine("caught exception"); } Console.WriteLine("goodbye"); }Özel Durum Ayarları'ndaAccessViolationException seçeneğini işaretlediyseniz, bu kodu hata ayıklayıcıda çalıştırdığınızda yürütme satırda bozulacaktır
throw. Ardından işlemi yürütmeye devam edebilirsiniz. Konsolun her iki satırı da görüntülemesi gerekir:caught exception goodbyeancak
heresatırı görüntülenmiyor.C# konsol uygulaması iki yöntemi olan bir sınıf kitaplığına başvurur. Bir yöntem bir özel durum oluşturur ve bunu işlerken ikinci bir yöntem aynı özel durumu oluşturur ancak işlemez.
public class Class1 { public void ThrowHandledException() { try { throw new AccessViolationException(); } catch (AccessViolationException ave) { Console.WriteLine("caught exception" + ave.Message); } } public void ThrowUnhandledException() { throw new AccessViolationException(); } }Konsol uygulamasının Main() yöntemi aşağıdadır:
static void Main(string[] args) { Class1 class1 = new Class1(); class1.ThrowHandledException(); class1.ThrowUnhandledException(); }Özel Durum Ayarları'ndaAccessViolationException seçeneğini işaretlediyseniz, bu kodu hata ayıklayıcıda çalıştırdığınızda hem
throwhem de ThrowUnhandledException() içindeki satırda yürütme kesilecektir.
Özel durum ayarlarını varsayılan ayarlara geri yüklemek için Listeyi varsayılan ayarlara geri yükle düğmesini seçin:
Hata ayıklayıcıya kullanıcı tarafından işlenmeyen özel durumlarda devam etmelerini söyleyin
.NET veya JavaScript kodunda Just My Code ile hata ayıklarsanız, hata ayıklayıcıya kullanıcı kodunda işlenmemiş ancak başka bir yerde işlenen özel durumlarda hata ayıklamayı önlemesini söyleyebilirsiniz.
Özel Durum Ayarları penceresinde, bir sütun etiketine sağ tıklayarak kısayol menüsünü açın ve sonra Sütunları > Göster Ek Eylemleri'ni seçin. ( Yalnızca Kodum seçeneğini kapattıysanız bu komutu görmezsiniz.) Ek Eylemler adlı üçüncü bir sütun görüntülenir.
Bu sütunda kullanıcı kodunda işlenmediğinde Devam Et gösterilen bir özel durum için, bu özel durum kullanıcı kodunda işlenmezse ancak harici olarak işlenirse hata ayıklayıcı devam eder.
Belirli bir özel durum için bu ayarı değiştirmek üzere özel durumu seçin, kısayol menüsünü göstermek için sağ tıklayın ve Kullanıcı Kodunda İşlenmeyen Durumlarda Devam Et'i seçin. Ayrıca, Ortak Dil Çalışma Zamanı özel durumlarının tamamı gibi bir özel durum kategorisinin tamamının ayarını da değiştirebilirsiniz.
Örneğin, ASP.NET web uygulamaları özel durumları http 500 durum koduna (ASP.NET Web API'sinde özel durum işleme) dönüştürerek işler ve bu da özel durumun kaynağını belirlemenize yardımcı olmayabilir. Aşağıdaki örnekte, kullanıcı kodu bir String.Format() oluşturan FormatException çağrısı yapar. Yürütme aşağıdaki gibi kesintiye uğrar:
üzerindeki durmalar
Özel durum ekleme ve silme
Özel durumlar ekleyebilir ve silebilirsiniz. Bir kategoriden bir özel durum türünü silmek için özel durumu seçin ve Özel Durum Ayarları araç çubuğundaki Liste düğmesinden (eksi işareti) seçili özel durumu sil'i seçin. Veya özel duruma sağ tıklayıp kısayol menüsünden Sil'i seçebilirsiniz. Bir özel durumun silinmesi, özel durumun işaretinin kaldırılmış olmasıyla aynı etkiye sahiptir. Bu, hata ayıklayıcının oluşturulduğu sırada bozulmayacağından kaynaklanır.
Özel durum eklemek için:
Özel Durum Ayarları penceresinde özel durum kategorilerinden birini seçin (örneğin, Ortak Dil Çalışma Zamanı).
Seçili kategoriye özel durum ekle düğmesini (artı işareti) seçin.
Özel durumun adını yazın (örneğin, System.UriTemplateMatchException).
Özel durum listeye eklenir (alfabetik sırada) ve otomatik olarak denetlenilir.
GPU Bellek Erişimi Özel Durumları, JavaScript Çalışma Zamanı Özel Durumları veya Win32 Özel Durumlar kategorilerine özel durum eklemek için hata kodunu ve açıklamayı ekleyin.
Tip
Yazım denetimi yapın! Özel Durum Ayarları penceresi, eklenen bir özel durumun varlığını denetlemez. Dolayısıyla Sytem.UriTemplateMatchException yazarsanız, bu özel durum için bir giriş alırsınız ( System.UriTemplateMatchException için değil).
Özel durum ayarları, belirli bir çözüme özgü olacak şekilde çözümün .suo dosyasında kalıcı olarak saklanır. Belirli özel durum ayarlarını çözümler arasında yeniden kullanamazsınız. Artık yalnızca eklenen özel durumlar kalıcı hale geliyor; silinen özel durumlar değildir. Bir özel durum ekleyebilir, çözümü kapatıp yeniden açabilirsiniz ve özel durum yine de orada olur. Ancak bir özel durumu siler ve çözümü kapatır/yeniden açarsanız, özel durum yeniden görünür.
Özel Durum Ayarları penceresi, C# dilinde genel özel durum türlerini destekler ancak Visual Basic'te desteklemez. gibi MyNamespace.GenericException<T>özel durumları kesmek için, özel durumu MyNamespace.GenericException'1 olarak eklemeniz gerekir. Yani, aşağıdaki kod gibi bir özel durum oluşturduysanız:
public class GenericException<T> : Exception
{
public GenericException() : base("This is a generic exception.")
{
}
}
Önceki yordamı kullanarak Özel Durum Ayarları'na özel durum ekleyebilirsiniz:
Özel duruma koşul ekleme
Özel durumlarla ilgili koşulları ayarlamak için Özel Durum Ayarları penceresini kullanın. Şu anda desteklenen koşullar, özel durum için dahil etmek veya dışlamak için modül adlarını içerir. Modül adlarını koşul olarak ayarlayarak, özel durum için yalnızca belirli kod modüllerinde kesmeyi seçebilirsiniz. Ayrıca belirli modüllerde hata oluşmasını önlemeyi de seçebilirsiniz.
Uyarı
Visual Studio 2017'den başlayarak özel duruma koşul ekleme işlemi desteklenir.
Koşullu özel durumlar eklemek için:
Özel Durum Ayarları penceresinde Koşulları düzenle düğmesini seçin veya özel duruma sağ tıklayıp Koşulları Düzenle'yi seçin.
Özel duruma fazladan gerekli koşullar eklemek için her yeni koşul için Koşul Ekle'yi seçin. Ek koşul satırları görüntülenir.
Her koşul satırı için modülün adını yazın ve karşılaştırma işleci listesini Eşittir veya Eşit Değil olarak değiştirin. Birden fazla modül belirtmek için adında joker karakterler (\*) belirtebilirsiniz.
Bir koşulu silmeniz gerekiyorsa, koşul satırının sonundaki X işaretini seçin.