En İyi 30 İstisna İşlemi Mülakat Soruları ve Cevapları [Yeni Başlayanlar ve Deneyimliler İçin]

Yayınlanan: 2020-09-29

İstisna işleme, bir programın normal akışını bozabilecek olası çalışma zamanı hatalarını işlemek için algoritmalarda uygulanan bir kavramdır. Bu kavram kullanılarak ele alınabilecek hatalardan bazıları şunlardır:

  • ClassNotFoundException
  • IOException
  • SQLİstisnası
  • RemoteException
  • Çalışma zamanı istisnası:
    • Aritmetikİstisna
    • NullPointerException
    • NumberFormatException
    • IndexOutOfBoundsException
      • ArrayIndexOutOfBoundsException
      • StringIndexOutOfBoundsException

Bu uygulamanın değeri, program yürütülürken bir istisna olması durumunda programın çökmesini önlemektir. İstisna İşleme olmadan, program bir istisna ile karşılaştığında bir hata verir ve programın geri kalanı yürütülmez. Ancak, bu kavramın uygulanması, ortaya çıkan istisnadan bağımsız olmaları durumunda programın geri kalanının yürütüldüğü bir geçici çözüm sağlayacaktır. Daha fazla bilgi edinmek için veri bilimi kurslarımıza göz atın.

Okuyun: Okunması Gereken 30 Selenyum Mülakat Sorusu ve Yanıtı: Nihai Kılavuz

İstisna İşleme Mülakat Soruları ve Cevapları

1. İstisnadan kastınız nedir?

Bir program yürütülürken bazen karşılaşılan anormal bir durumdur. Programın normal akışını bozar. Bu istisnayı ele almak gereklidir; aksi takdirde programın aniden sonlandırılmasına neden olabilir.

2. Java'da istisnaların nasıl ele alınabileceğini açıklayın. Sürecin arkasındaki istisna işleme mekanizması nedir?

İstisna işleme mekanizmasının üç bölümü vardır. Bunlara denir:

  • Try bloğu: Kodun ilk çalıştırılmaya çalışılan ve oluşabilecek herhangi bir istisnaya karşı izlenen bölümü.
  • Yakalama bloğu: 'try' bloğu tarafından herhangi bir istisna atılırsa, bu kod bölümü tarafından yakalanır.
  • Son olarak blok: Bu bölümün altındaki kod, varsa, 'try' bloğunda yakalanan istisnalardan bağımsız olarak her zaman yürütülür. İstisna olmasa bile bu bloğun altındaki kod çalıştırılacaktır.

3. 'try', 'catch' ve 'finally' blokları arasında başka ifadeler tutmak mümkün müdür?

bölümleri arasında herhangi bir ifadeye yer verilmesi önerilmez. 'dene', 'yakala' ve 'nihayet' blokları, istisna işleme mekanizmasının bütün bir birimini oluşturdukları için.

denemek

{

//İstisnalar için izlenen kod.

}

// İfadeleri burada tutamazsınız

yakalamak (istisna ex)

{

// Varsa, try bloğu tarafından oluşturulan istisnaları yakalayın.

}

// İfadeleri burada tutamazsınız

nihayet

{

//Bu blok, istisnalardan bağımsız olarak her zaman yürütülür.

}

4. 'catch' ve 'nially' blokları olmadan sadece bir 'try' bloğunu dahil etmek mümkün olacak mı?

Bu bir derleme hatası verecektir. 'try' bloğunun ardından ya bir 'catch' bloğu ya da her ikisi birden değilse bir 'finally' bloğu ile takip edilmesi gerekir. İstisna işleme akışının kesintiye uğramaması için 'yakala' veya 'nihayet' bloklarından birine ihtiyaç vardır.

5. Kontrol nihayet bloğun kendisinden dönüyorsa, 'finally' bloğundan sonra ifadeleri tutmak mümkün olacak mı?

Bu, ulaşılamaz bir yakalama bloğu hatasına neden olur. Bunun nedeni, kontrolün 'nihayet' bloğunun kendisinden geri dönecek olmasıdır. Derleyici, istisna dışında satırdan sonra kodu yürütemez. Bu nedenle yürütme erişilemez bir kod hatası gösterecektir.

Yurtdışında Eğitim Görmeyi mi Hayal Ediyorsunuz? İşte size uygun program

6. Ulaşılamaz bir yakalama bloğu hatasını açıklayın.

Birden fazla yakalama bloğu olması durumunda, yakalama bloklarının yerleştirildiği sıra en özelden en genele doğrudur. Yani, bir istisnanın alt sınıfları önce gelmeli ve ardından üst sınıflar takip edecektir. Önce süper sınıfların, ardından alt sınıfların tutulması durumunda, derleyici ulaşılamaz bir yakalama bloğu hatası gösterecektir.

public class ExceptionHandling

{

public static void main(String[] args)

{

denemek

{

int i = Tamsayı.parseInt(“test”);

//Bu deyim bir NumberFormatException oluşturacak //çünkü verilen girdi string, //belirtilen format tamsayı ise.

}

yakalamak (istisna ex)

{

System.out.println(“Bu blok tüm istisna türlerini işler”);

//Bu //blokta her türlü istisna işlenebilir çünkü bu bir süper istisna sınıfıdır.

}

catch(NumberFormatException ex)

{

//Bu derleme zamanı hatası verecektir

//Bu bloğa erişilemez hale gelecek

// istisna, yukarıdaki //catch bloğu tarafından zaten yakalanacaktı

}

}

}

7. Bir 'try' bloğundaki üç ifadeyi düşünün: deyim1, deyim2 ve deyim3. Bunu, 'try' bloğunun yürütülmesi sırasında meydana gelen istisnaları yakalamak için bir 'catch' bloğu takip eder. İstisnanın deyim2'de atıldığını varsayalım. İfade3'ün yürütüleceğini düşünüyor musunuz?

Statement3 yürütülmeyecek. Herhangi bir noktada 'try' bloğu tarafından bir istisna atılırsa, istisnadan sonra kalan kod yürütülmez. Bunun yerine akış kontrolü doğrudan 'catch' bloğuna gelecektir.

8. Java'da hata ve istisnayı ayırt edin.

Hata ve istisna arasındaki temel fark, hataya JVM'nin (Java Sanal Makinesi) çalıştığı ortam neden olurken, istisnalara programın kendisi neden olur. Örneğin OutOfMemory, JVM belleğini tükettiğinde oluşan bir hatadır.

Ancak NullPointerException, program boş bir nesneye erişmeye çalıştığında karşılaşılan bir istisnadır. Bir hatadan kurtarmak mümkün değildir. Bu nedenle, bir hatanın tek çözümü yürütmeyi sonlandırmaktır. Ancak, dene ve yakala bloklarını kullanarak veya özel durumları arayan işlevine geri göndererek istisnaları geçici olarak çözmek mümkündür.

Mutlaka Okuyun: Java Mülakat Soruları ve Cevapları

9. İstisna türleri nelerdir? Onları açıkla.

İki tür istisna vardır:

Kontrol Edilen İstisnalar

Derleyici tarafından bilinen ve tanınan özel durum türleri. Bu istisnalar yalnızca derleme zamanında kontrol edilebilir. Bu nedenle, derleme zamanı istisnaları olarak da adlandırılırlar. Bunlar, try ve catch blokları kullanılarak veya bir throw yan tümcesi kullanılarak işlenebilir. Bu istisnalar uygun şekilde ele alınmazsa, derleme zamanı hataları üreteceklerdir. Örnekler, RunTimeException dışındaki Java.lang.Exception alt sınıflarını içerir.

İşaretlenmemiş İstisnalar

Derleyici tarafından tanınmayan özel durum türleri. Yalnızca çalışma zamanında ortaya çıkarlar. Bu nedenle, bunlara çalışma zamanı istisnaları da denir. Derleme zamanında kontrol edilmezler. Bu nedenle, başarılı bir derlemeden sonra bile, uygun şekilde yönetilmezlerse programın zamanından önce sonlandırılmasına neden olabilirler. Örnekler, Java.lang.RunTimeException ve Java.lang.Error'ın alt sınıflarını içerir.

10. Java'daki istisnaların hiyerarşisi nedir?

Java.lang.Throwable, Java'daki tüm hataların ve istisnaların süper sınıfıdır. Bu sınıf, Java.lang.Object sınıfını genişletir. Catch bloğunun argümanı, tipi veya sadece alt sınıf tipi olmalıdır. Throwable sınıfı iki alt sınıf içerir:

  1. Java.lang.Error : Bu, Java'daki tüm hata türleri için bir süper sınıftır. Buna dahil olan yaygın hatalar şunlardır:
    1. java.lang.VirtualMachineError: Bunun altında –
      1. StackOverFlowError
      2. Bellek YetersizHata
    2. java.lang.AssertionError
    3. java.lang.LinkageError: Bunun altında –
      1. NoClassDefFoundError
      2. UyumsuzSınıfChangeError
  2. Java.lang.Exception: Bu, Java'daki tüm istisna türlerinin bir süper sınıfıdır. Bunun altındaki yaygın istisnalar şunlardır:
    1. Çalışma zamanı istisnası
      1. Aritmetikİstisna
      2. NumberFormatException
      3. NullPointerException
      4. ArrayIndexOutOfBoundsException
      5. ClassCastException
    2. java.lang.InterruptedException
    3. java.lang.IOException
    4. java.lang.SQLException
    5. java.lang.ParseException

11. Java'daki çalışma zamanı istisnaları nelerdir? Birkaç örnek verin.

Çalışma zamanında meydana gelen istisnalara çalışma zamanı istisnaları denir. Derleyici, denetlenmeyen istisnalar gibi bu istisnaları tanıyamaz. Java.lang.RunTimeException ve Java.lang.Error'ın tüm alt sınıflarını içerir. Örnekler arasında NumberFormatException, NullPointerException, ClassCastException, ArrayIndexOutOfBoundException, StackOverflowError vb. sayılabilir.

12. Java'da OutOfMemoryError tanımlayın.

JVM'nin belleği tükendiğinde karşılaşılan Java.lang.Error öğesinin alt sınıfıdır.

13. Java'da NoClassDefFoundError ve ClassNotFoundException arasında ayrım yapın.

Çalışma zamanında belirli bir sınıf bulunmadığında hem NoClassDefFoundError hem de ClassNotFoundException oluşur. Ancak, farklı senaryolar altında ortaya çıkarlar. NoClassDefFoundError, derleme zamanında belirli bir sınıf mevcut olduğu halde çalışma zamanında eksik olduğu için bir hata oluştuğunda ortaya çıkar. ClassNotFoundException, çalışma zamanında sınıf yolunda güncellenmeyen bir sınıfı yüklemeye çalışan bir uygulama için bir özel durumla karşılaşıldığında oluşur.

14. 'try' veya 'catch' bloklarından biri kontrolü döndürürse, 'finally' bloğu yürütülür mü?

'finally' bloğu, try veya catch bloklarının kontrolü döndürüp döndürmediğine bakılmaksızın her zaman yürütülür.

15. Manuel olarak bir istisna atmak mümkün müdür? Evet ise, nasıl olduğunu açıklayın.

Manuel olarak bir istisna atmak mümkündür. 'Throw' anahtar kelimesi kullanılarak yapılır. Bir istisnayı manuel olarak atmak için sözdizimi şöyledir:

InstanceOfThrowableType atmak;

El ile bir istisna oluşturmak için 'throw' anahtar sözcüğünü kullanmaya bir örnek.

denemek

{

NumberFormatException ex = yeni NumberFormatException(); //Burada NumberFormatException için açıkça bir nesne oluşturuyoruz

eski atmak; // throw anahtar sözcüğünü kullanarak NumberFormatException nesnesini açıkça atma

}

catch(NumberFormatException ex)

{

System.out.println(“Bu blokta, açıkça atılan NumberFormatException nesnesi yakalanabilir.”);

}

Okuyun: En İyi 35 Bahar Mülakat Soruları ve Cevapları: Nihai Kılavuz

16. Java'da bir istisnayı yeniden atmaktan kastınız nedir?

'try' bloğunda ortaya çıkan istisnalar 'catch' bloğunda işlenir. Eğer 'catch' bloğu bu istisnayı işleyemiyorsa, 'throw' anahtar sözcüğünü kullanarak aynı istisnayı yeniden göndermesi mümkündür. Bu mekanizmaya bir istisnayı yeniden atma denir. Uygulama aşağıdaki gibidir:

denemek

{

dize s = boş;

System.out.println(s.length()); //Bu ifade bir NullPointerException oluşturur

}

catch(NullPointerException ex)

{

System.out.println(“Burada NullPointerException yakalandı”);

eski atmak; //NullPointerException'ı yeniden atma

}

17. Java'da neden 'throws' anahtar sözcüğünü kullanıyorsunuz?

Bir yöntemin işlenememesi durumunda bir istisna oluşturması mümkünse, bu istisnayı 'throws' anahtar sözcüğünü kullanarak belirtmelidir. Bu istisnanın ele alınmasında bu yöntemin arayan işlevlerine yardımcı olacaktır. 'Throws' anahtar sözcüğünü kullanmak için sözdizimi şöyledir:

return_type yöntem_adı(parametre_listesi) istisna_listesini atar

{

//kod

}

Burada, istisna_listesi, yöntem tarafından atılabilecek istisnaların listesidir. Bu istisnalar virgülle ayrılmalıdır. Kodun bir örneği:

public class ExceptionHandling

{

public static void main(String[] args)

{

denemek

{

methodWithThrows();

}

catch(NullPointerException ex)

{

System.out.println("methodWithThrows() yöntemi tarafından atılan NullPointerException burada yakalanacak");

}

}

statik void methodWithThrows(), NullPointerException'ı atar

{

dize s = boş;

System.out.println(s.length()); //Bu ifade NullPointerException'ı atar

}

}

18. Genellikle 'finally' bloğu içindeki DB kaynaklarını kapatmak gibi temizleme işlemlerinin sürdürülmesi önerilir. Neden gerekli?

'finally' bloğu, 'try' bloğunda istisnalar oluşturulup oluşturulmadığına veya yükseltilmiş istisnaların 'catch' bloğunda yakalanıp yakalanmadığına bakılmaksızın her zaman yürütülür. Temizleme işlemlerinin 'nihayet' bloğunda tutulması, her durumda bu işlemlerin çalışmasını sağlar ve ortaya çıkabilecek veya çıkmayacak istisnalardan etkilenmez.

19. Java'da final, final ve finalize arasında nasıl bir ayrım yaparsınız?

İlk olarak, 'final' bir değişkeni, bir yöntemi veya bir sınıfı değiştirilemez kılmak için kullanılabilecek bir anahtar kelimedir. Basitçe söylemek gerekirse, bir değişken final olarak bildirilmişse, bir kez başlatıldığında değeri değiştirilemez. Bir yöntem final olarak bildirilirse, alt sınıfta geçersiz kılınamaz veya değiştirilemez. Bir sınıf final olarak ilan edilirse, başka sınıflara genişletilemez.

İkincisi, 'nihayet', 'try' ve 'catch' bloklarıyla birlikte istisna işlemede kullanılan bir bloktur. Bu blok, yükseltilmiş bir istisnadan bağımsız olarak veya yükseltilmiş istisna işlenirse her zaman yürütülür. Genellikle bu blok, veritabanı bağlantısı, G/Ç kaynakları vb. gibi kaynakları kapatmak için temizleme işlemlerini gerçekleştirmek için kullanılır.

Üçüncüsü, finalize() yöntemi korumalı bir yöntemdir. Java.lang.Object sınıfına aittir. Java'da oluşturulan her sınıf bu yöntemi devralır. Çöp toplayıcı iş parçacığı, bir nesne bellekten kaldırılmadan önce bu yöntemi çağırır. Bir nesne bellekten kaldırılmadan önce, bazı temizleme işlemlerini gerçekleştirmek için bu yöntem kullanılır.

korumalı void finalize() Fırlatılabilir atar

{

//Temizleme işlemleri

}

20. Java'da özelleştirilmiş istisnalar nelerdir?

Program akışının gereksinimlerine göre Java'da istisna sınıfları atılabilir. Bu istisnalara kullanıcı tanımlı istisnalar denir. Bunlara özelleştirilmiş istisnalar da denir. Bu istisnalar, istisnalar hiyerarşisindeki sınıflardan herhangi birini genişletmelidir.

21. Java'da ClassCastException'ı nasıl açıklarsınız?

JVM, bir türdeki bir nesneyi başka bir türe çeviremediğinde, bu istisna ortaya çıkar. Bu bir RunTimeException'dır.

22. Java'da fırlatma, fırlatma ve fırlatılabilirlik arasındaki farkı ayırt edin.

İlk olarak, 'throw' anahtar kelimesi Java'da manuel olarak bir istisna atmak için kullanılır. Bu anahtar sözcüğü kullanarak, herhangi bir yöntem veya bloktan bir istisna atmak mümkündür. Ancak, istisnanın Java.lang.Throwable sınıfı türünde olması veya Java.lang.Throwable sınıfının alt sınıflarından birine ait olması önemlidir.

İkinci olarak, Java'daki yöntem imzasında 'atma' anahtar sözcüğü kullanılır. Eğer metot istisna atabiliyorsa bu metot ile belirtilir. Belirtilen istisnalar, ilgili arayan işlevleri tarafından işlenir. Bu, ya dene ve yakala blokları kullanılarak ya da throws anahtar sözcüğü kullanılarak yapılır.

Üçüncüsü, Java'daki her türlü hata ve istisna için süper sınıfa Atılabilir denir. Java.lang paketinin bir üyesidir. JVM veya throw ifadesi, yalnızca bu sınıfın veya alt sınıflarının örneklerini yükseltir. Catch bloğu yalnızca bir argüman içermeli ve bu türden veya onun alt sınıflarından olmalıdır. Özelleştirilmiş istisnaların oluşturulması durumunda, bu sınıfı da genişletmeleri gerekir.

23. Java'da StackOverflowError'ı açıklayın.

Bu, çalışma zamanında yığın taştığında JVM tarafından oluşturulan bir hatadır.

24. Alt sınıfta denetlenen istisnalar dışında denetlenmeyen bir istisna oluşturan bir süper sınıf yöntemini geçersiz kılmak mümkün müdür?

Bu mümkün değildir, çünkü bir süper sınıf yöntemi denetlenmemiş bir istisna atarsa, aynı istisna veya diğer herhangi bir denetlenmemiş istisna ile alt sınıfta geçersiz kılınacaktır. Ancak, kontrol edilen istisnalar dışında geçersiz kılınamaz.

25. Java'da zincirleme istisnaları tanımlayın.

Bir programda, bir istisna, bir domino etkisi yaratarak birçok istisna oluşturabilir. Bu, bir istisnalar zincirine neden olur. İstisnanın gerçek nedeninin yerini bilmek faydalıdır. Bu, Java'daki zincirleme istisnalar özelliğiyle mümkündür. Bu, JDK 1.4'ten beri tanıtılmaktadır. Java'da zincirleme istisnaların uygulanması için, Throwable sınıfına iki yeni kurucu ve iki yeni yöntem dahil edilmiştir. Bunlar,

Throwable sınıfının yapıcıları:

    1. Atılabilir(Atılabilir neden): Neden, geçerli istisnayı oluşturan istisnadır.
    2. Atılabilir(Dize msj, Atılabilir neden): Msg dizesi istisna mesajıdır. Mevcut istisnayı ortaya çıkaran istisna, buradaki sebeptir.

Atılabilir sınıfın yöntemleri:

    1. getCause() yöntemi: Yükseltilmiş bir özel durumun gerçek nedeni bu yöntem tarafından döndürülür.
    2. initCause(Throwable neden) yöntemi : Çağıran istisnanın nedeni bu yöntemle belirlenir.

26. Java'da her türlü hata ve istisna için hangi sınıf süper sınıf olarak tanımlanır?

Her tür hata ve istisna için süper sınıf, Java'da java.lang.Throwable'dır.

27. Deneme, yakalama ve nihayet blokların doğru bir kombinasyonu olarak ne sınıflandırılabilir?

Dene ve yakala bloğunun bir kombinasyonu.

denemek

{

// bloğu dene

}

yakalamak (istisna ex)

{

// blok yakalama

}

Deneme ve nihayet engelleme kombinasyonu.

denemek

{

// bloğu dene

}

nihayet

{

//son olarak engelle

}

Üçünün birleşimi: dene, engelle, sonunda engelle.

denemek

{

// bloğu dene

}

yakalamak (istisna ex)

{

// blok yakalama

}

nihayet

{

//son olarak engelle

}

28. Neden printStackTrace() yöntemini kullanıyorsunuz?

Bu yöntem, meydana gelen istisna hakkında ayrıntılı bilgi yazdırmak için kullanılır.

29. Kontrol edilen istisnaların bazı örnekleri nelerdir?

Kontrol edilen istisnalara bazı örnekler ClassNotFoundException, SQLException ve IOException'dır.

30. Kontrol edilmeyen istisnalara ilişkin bazı örnekler nelerdir?

Denetlenmeyen istisnaların bazı örnekleri arasında NullPointerException, ArrayIndexOutOfBoundsException ve NumberFormatException bulunur.

Ayrıca Okuyun: Yeni Başlayanlar ve Deneyimliler İçin 47 OOPS Mülakat Sorusu ve Yanıtını Okumalısınız

toparlamak

Büyük veriler hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500+ saatlik zorlu eğitim, 9+ proje ve ödev, IIIT sunan Tam Yığın Yazılım Geliştirmede PG Diplomasına göz atın -B Mezunu statüsü, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.

Veri Bilimi öğrenmekle ilgileniyorsanız ve bu alanda bir kariyer yapmayı tercih ediyorsanız, çalışan profesyoneller için oluşturulan ve 10'dan fazla vaka çalışması ve proje, pratik uygulamalı atölye çalışmaları sunan IIIT-B & upGrad'ın Veri Biliminde Yönetici PG Programına göz atın , endüstri uzmanlarıyla mentorluk, endüstri danışmanlarıyla 1'e 1, en iyi firmalarla 400+ saat öğrenim ve iş yardımı.

Geleceğin Kariyerine Hazırlanın

Veri Biliminde Yüksek Lisans için Başvurun