IntelliJ'de “İstisnada Kırılma” var mı?


318

İlk istisna olayında hata ayıklamayı otomatik olarak kesecek bir özellik var mı?

Yani biz

  1. uygulamayı başlat
  2. istisna getiren bir şey yap
  3. IntelliJ istisna meydana vurgulanan satırını attı var.

Muhtemelen sadece yakalanmamış istisnalardan kurtulmak istersiniz, değil mi?
David Ferenczy Rogožan

Yanıtlar:


367

Çalıştır | Kesme Noktalarını Görüntüle | İstisna Kesme Noktaları


Ne yazık ki, pratikte (büyük verilerle), önem verdiğiniz çerçeve değişkenlerinin her zaman yüklenmediğini buldum.
information_interchange

158

İletişim kutusunu açmanın hızlı bir yolu Ctrl+ SHIFT+ F8(Mac'te: Cmd+ SHIFT+ F8) tuşlarına basmak ve ardından istisna kesme noktaları sekmesine tıklamaktır. Görüntülediğiniz son sekme buysa, yine de seçilecektir, bu da istisnaları açıp kapatmayı kolaylaştırmayı kolaylaştırır.

Bu, IntelliJ'nin kural dışı durumun ortaya çıktığı kodda (veya kitaplık kodunda) kırılmasına neden olur. Özellikle, yığının yürütülmesi için catch / nihayet bloklar aramaya başlamadan önce, istisna işlemede bir 'ilk şans' elde edersiniz.


İPUCU: Java, sınıfları yüklerken dahili olarak çok sayıda istisna atma eğilimindedir, bu nedenle tüm istisnaları kırmak oldukça sıkıcı olabilir. İyi haber şu ki, koşul alanını kullanarak belirli istisna türlerini hariç tutabilirsiniz .

Örneğin:

!(this instanceof java.lang.ClassNotFoundException)

Bu gibi birden fazla koşulu birlikte zincirleyebilirsiniz &&.

resim açıklamasını buraya girin


9
"Sadece projemden istisnalar (Java sisteminden değil) koparmanın" bir yolu var mı?
Lanet Sebzeler

16
Unutmayın "Seçilen kesme noktası vuruluncaya kadar devre dışı:" - bu inanılmaz. Tüm Java veya diğer kütüphaneler yüklendikten ve kurulduktan sonra kodunuzda bir kesme noktası ayarlayın. Ardından açılır menüden kesme noktanızı seçin ve bekleyin. Kırılma noktanız vurulacak ve devam ettiğinizde devam edince, yeni Yakalanan ve Yakalanmayan İstisna filtreniz devreye girecek. :)
Louis St-Amour

1
Kesme noktaları iletişim kutusunun alt kısmında "Yakalandı özel durum" ve "Yakalanmayan özel durum" öğelerini işaretlemeyi unutmayın.
Robino

59

In IntelliJ IDEA 14 gidin:

Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"

İşaretini kaldırmazsanız Caught Exceptions, yürütme her Java Frameworkdahili istisna attığında durdurulur .


1
Çalıştır -> Kesme Noktalarını Görüntüle ... -> "Java İstisnaları Kesme Noktalarını" Kontrol Edin -> "Yakalanan İstisnalar" seçeneğinin işaretini kaldırın
Jonas

2
Ne yazık ki, bu "yakalanan istisnaları" devre dışı bıraktıktan sonra bile benim için yakalanan istisnaları kesiyor.
Carcigenicate

Bu çok önemli bir bilgi diyebilirim, aksi takdirde, hiçbir bilgi değeri olmayan bir istisna cehennemi. Temelde Grails gibi büyük çerçeveler kullanırken.
David Ferenczy Rogožan

Tamam, fikrimi değiştirdim - yakalanan istisnaları olan ve olmayan her iki seçenek de kötü, çünkü genellikle, tipik bir web uygulamasında, tüm istisnalar yakalanmak için kullanılır, her şeyi yakalayan ve olması için biçimlendiren bir üst düzey catch bloğu vardır. kullanıcıya sunulur. Dolayısıyla, yakalanan istisnalar olmadan, hiçbir şeye zarar vermez, onlarla birlikte, tek bir istek sırasında yüzlerce kez kırılır. Her ikisi de işe yaramaz :(
David Ferenczy Rogožan

Nasıl kullanılacağını biliyorsanız hiçbir şey işe yaramaz.
Alessandro Flati

12

Evet var. IntelliJ IDEA içindeki kesme noktaları iletişim kutusunda bir istisna kesme noktası tanımlamanız gerekir ("Herhangi bir istisna" olabilir).

İstisnalar, istenirse koşul veya sınıfa göre veya yakalanan veya yakalanmayan istisnalarla ilgilenip ilgilenmediğinize göre filtrelenebilir.


7

Sol üst köşedeki küçük "+" işaretine tıklarsanız, yeni bir kesme noktası ekleyebilirsiniz. İstisna Kesme Noktası'nı seçerseniz, kırılacak istisna sınıfını girebileceğiniz küçük bir iletişim kutusu alırsınız (tüm istisnaları kırmak istemiyorsanız).


0

Intellij'in daha yeni sürümlerinde Çalıştır > Kesme Noktalarını Görüntüle altında .

Ardından Java İstisna Kesme Noktaları -> Herhangi Bir İstisna'yı işaretleyin .

İstisnalarda hata ayıklamanın iyi bir yolu, ana uygulama paketinizi ve joker kartı kullanmaktır .*. Bu şekilde, diğer kütüphanelerin istisnalarını atlarsınız, çünkü çoğu zaman başka bir kütüphane tarafından değil, uygulamanız tarafından atılan istisnaları ararsınız (bu bir çok istisna olabilir).

Resimde gösterilen bir örnek olarak com.gs.mercury.*, uygulama her istisna attığında kırmak için kullanıyorum . İstedikleri şey için istisnalar kullanırsanız (istisnai durumları ele almak ve normal durumların akışını işlememek için) yalnızca neredeyse her zaman istenen istisnaya ulaştığınızda durursunuz.

PD. cevap oldukça yararlı Catch sınıf filtresini işaret etmek için eklendi .

Kesme noktaları

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.