Top 30 de întrebări și răspunsuri la interviu pentru gestionarea excepțiilor [pentru cei proaspăți și cu experiență]

Publicat: 2020-09-29

Gestionarea excepțiilor este un concept care este implementat în algoritmi pentru a gestiona posibile erori de rulare, care pot perturba fluxul normal al unui program. Unele dintre erorile care pot fi tratate folosind acest concept sunt:

  • ClassNotFoundException
  • IOException
  • SQLException
  • RemoteException
  • RuntimeException:
    • ArithmeticException
    • NullPointerException
    • NumberFormatException
    • IndexOutOfBoundsException
      • Indicele matricei este în afara limitelor
      • StringIndexOutOfBoundsException

Meritul acestei implementări este de a preveni blocarea programului dacă există o excepție în timpul executării programului. Fără gestionarea excepțiilor, programul va arunca o eroare atunci când întâlnește o excepție, iar restul programului nu va fi executat. Cu toate acestea, implementarea acestui concept va oferi o soluție de soluționare în care restul programului este executat dacă acestea sunt independente în raport cu excepția survenită. Pentru a afla mai multe, consultați cursurile noastre de știință a datelor.

Citiți: Trebuie să citiți 30 de întrebări și răspunsuri la interviu cu seleniu: Ghid definitiv

Excepție Gestionarea întrebărilor și răspunsurilor la interviu

1. Ce înțelegi prin excepție?

Este o condiție anormală care se întâlnește uneori atunci când se execută un program. Întrerupe fluxul normal al programului. Este necesar să se gestioneze această excepție; în caz contrar, poate cauza oprirea bruscă a programului.

2. Explicați cum pot fi gestionate excepțiile în Java. Care este mecanismul de gestionare a excepțiilor din spatele procesului?

Există trei părți ale mecanismului de gestionare a excepțiilor. Acestea se numesc:

  • Try block: Secțiunea de cod care este prima încercare de a fi executată și monitorizată pentru orice excepție care ar putea apărea.
  • Catch block: Dacă vreo excepție este aruncată de blocul „try”, aceasta este prinsă de această secțiune de cod.
  • În final, bloc: Codul din această secțiune este întotdeauna executat, indiferent de excepțiile prinse în blocul „try”, dacă există. Chiar dacă nu există nicio excepție, codul din acest bloc va fi executat.

3. Este posibil să păstrați alte declarații între blocurile „try”, „catch” și „finally”?

Nu este recomandat să includeți nicio declarație între secțiunile din blocurile „try”, „catch” și „finally”, deoarece formează o unitate întreagă a mecanismului de gestionare a excepțiilor.

încerca

{

//Cod care este monitorizat pentru excepții.

}

//Nu puteți păstra declarații aici

prinde (excepție ex)

{

//Prinți excepțiile aruncate de blocul try, dacă există.

}

//Nu puteți păstra declarații aici

in cele din urma

{

//Acest bloc este întotdeauna executat, indiferent de excepții.

}

4. Va fi posibil să includeți doar un bloc „try” fără blocurile „catch” și „finally”?

Acest lucru ar da o eroare de compilare. Este necesar ca blocul „try” să fie urmat fie cu un bloc „catch”, fie cu un bloc „finally”, dacă nu cu ambele. Fie unul dintre blocurile „catch” sau „finally” este necesar pentru ca fluxul de gestionare a excepțiilor să nu fie întrerupt.

5. Va fi posibil să se păstreze declarațiile după blocul „finally” dacă controlul revine din blocul finally în sine?

Acest lucru va duce la o eroare de blocare de captură inaccesabilă. Acest lucru se datorează faptului că controlul se va întoarce din blocul „finally” în sine. Compilatorul nu va executa codul după linie, cu excepția. De aceea, execuția va afișa o eroare de cod inaccesibil.

Visezi să studiezi în străinătate? Iată programul potrivit pentru tine

6. Explicați o eroare de blocare de captură inaccesabilă.

În cazul blocurilor de captură multiple, ordinea în care sunt plasate blocurile de captură este de la cele mai specifice până la cele mai generale. Adică, subclasele unei excepții ar trebui să vină mai întâi, iar apoi vor urma super-clasele. În cazul în care super-clasele sunt păstrate mai întâi, urmate de subclasele după el, compilatorul va afișa o eroare catch block inaccesibil.

Clasa publică ExceptionHandling

{

public static void main(String[] args)

{

încerca

{

int i = Integer.parseInt(“test”);

//Această instrucțiune va arunca o excepție NumberFormatException //deoarece intrarea dată este șir, în timp ce //formatul specificat este întreg.

}

prinde (excepție ex)

{

System.out.println(„Acest bloc se ocupă de toate tipurile de excepții”);

//Toate tipurile de excepții pot fi gestionate în acest //bloc, deoarece este o super clasă de excepții.

}

catch(NumberFormatException ex)

{

//Acest lucru va da o eroare de timp de compilare

//Acest bloc va deveni inaccesibil ca

//excepția ar fi deja prinsă de blocul //catch de mai sus

}

}

}

7. Luați în considerare trei instrucțiuni dintr-un bloc „încercați”: statement1, statement2 și statement3. Este urmat de un bloc „catch” pentru a surprinde excepțiile care au apărut în timpul execuției blocului „try”. Să presupunem că excepția este aruncată la statement2. Credeți că declarația3 va fi executată?

Declarația 3 nu va fi executată. Dacă o excepție este aruncată de blocul „try” în orice moment, codul rămas după excepție nu va fi executat. În schimb, controlul fluxului va veni direct la blocul „catch”.

8. Diferențiază eroarea și excepția în Java.

Diferența cheie dintre eroare și excepție este că, în timp ce eroarea este cauzată de mediul în care rulează JVM (Java Virtual Machine), excepțiile sunt cauzate de programul însuși. De exemplu, OutOfMemory este o eroare care apare atunci când JVM-ul își epuizează memoria.

Dar, NullPointerException este o excepție care este întâlnită atunci când programul încearcă să acceseze un obiect nul. Recuperarea după o eroare nu este posibilă. Prin urmare, singura soluție la o eroare este oprirea execuției. Cu toate acestea, este posibil să soluționați excepțiile folosind blocurile try and catch sau aruncând excepții înapoi la funcția apelant.

Trebuie citit: Întrebări și răspunsuri la interviu Java

9. Care sunt tipurile de excepții? Explicați-le.

Există două tipuri de excepții:

Excepții verificate

Tipul de excepții care sunt cunoscute și recunoscute de compilator. Aceste excepții pot fi verificate numai în timpul compilării. Prin urmare, ele sunt numite și excepții de timp de compilare. Acestea pot fi gestionate fie folosind blocuri try and catch, fie folosind o clauză throw. Dacă aceste excepții nu sunt gestionate corespunzător, vor produce erori de timp de compilare. Exemplele includ subclasele java.lang.Exception, cu excepția RunTimeException.

Excepții nebifate

Tipul de excepții care nu sunt recunoscute de compilator. Ele apar numai în timpul rulării. Prin urmare, ele sunt numite și excepții de timp de execuție. Ele nu sunt verificate în timpul compilării. Prin urmare, chiar și după o compilare reușită, ele pot cauza oprirea prematură a programului dacă nu este gestionat corespunzător. Exemplele includ subclasele java.lang.RunTimeException și java.lang.Error.

10. Care este ierarhia excepțiilor în Java?

Java.lang.Throwable este o super clasă a tuturor erorilor și excepțiilor din Java. Această clasă extinde clasa java.lang.Object. Argumentul catch block ar trebui să fie doar tipul sau subclasa. Clasa Throwable include două subclase:

  1. java.lang.Error : Aceasta este o super clasă pentru toate tipurile de erori în Java. Erorile comune incluse în aceasta sunt:
    1. java.lang.VirtualMachineError: Sub aceasta –
      1. StackOverFlowError
      2. OutOfMemoryError
    2. java.lang.AssertionError
    3. java.lang.LinkageError: Sub acest –
      1. NoClassDefFoundError
      2. IncompatibleClassChangeError
  2. java.lang.Exception: Aceasta este o super clasă de toate tipurile de excepții în Java. Excepțiile comune de la aceasta sunt:
    1. RunTimeException
      1. ArithmeticException
      2. NumberFormatException
      3. NullPointerException
      4. Indicele matricei este în afara limitelor
      5. ClassCastException
    2. java.lang.InterruptedException
    3. java.lang.IOException
    4. java.lang.SQLException
    5. java.lang.ParseException

11. Ce sunt excepțiile de rulare în Java? Dați câteva exemple.

Excepțiile care apar în timpul execuției sunt numite excepții în timpul execuției. Compilatorul nu poate recunoaște aceste excepții, cum ar fi excepțiile neverificate. Include toate subclasele de java.lang.RunTimeException și java.lang.Error. Exemplele includ NumberFormatException, NullPointerException, ClassCastException, ArrayIndexOutOfBoundException, StackOverflowError etc.

12. Definiți OutOfMemoryError în Java.

Este subclasa java.lang.Error care este întâlnită atunci când JVM-ul rămâne fără memorie.

13. Faceți diferența între NoClassDefFoundError și ClassNotFoundException în Java.

Atât NoClassDefFoundError, cât și ClassNotFoundException apar atunci când o anumită clasă nu este găsită în timpul rulării. Cu toate acestea, ele apar în diferite scenarii. NoClassDefFoundError este atunci când apare o eroare, deoarece o anumită clasă era prezentă la momentul compilării, dar lipsea în timpul rulării. ClassNotFoundException apare atunci când se întâlnește o excepție pentru o aplicație care încearcă să încarce o clasă în timpul rulării, care nu este actualizată în calea clasei.

14. Blocul „finally” este executat dacă oricare dintre blocurile „try” sau „catch” returnează controlul?

Blocul „finally” este întotdeauna executat, indiferent dacă blocurile try sau catch returnează sau nu controlul.

15. Este posibil să aruncați o excepție manual? Dacă da, explicați cum.

Este posibil să aruncați o excepție manual. Se face folosind cuvântul cheie „aruncă”. Sintaxa pentru lansarea manuală a unei excepții este

arunca InstanceOfThrowableType;

Iată un exemplu de utilizare a cuvântului cheie „aruncă” pentru a arunca manual o excepție.

încerca

{

NumberFormatException ex = nou NumberFormatException(); //Aici creăm un obiect pentru NumberFormatException în mod explicit

arunca ex; //Aruncarea obiectului NumberFormatException în mod explicit folosind cuvântul cheie throw

}

catch(NumberFormatException ex)

{

System.out.println(„În acest bloc, obiectul NumberFormatException aruncat explicit poate fi prins.”);

}

Citiți: Top 35 de întrebări și răspunsuri la interviul de primăvară: Ghid definitiv

16. Ce vrei să spui prin reintroducerea unei excepții în Java?

Excepțiile care sunt ridicate în blocul „try” sunt tratate în blocul „catch”. Dacă blocul „catch” nu poate gestiona acea excepție, este posibil să poată reintroduce aceeași excepție folosind cuvântul cheie „throw”. Acest mecanism se numește reintroducerea unei excepții. Implementarea este după cum urmează:

încerca

{

String s = nul;

System.out.println(s.length()); //Această instrucțiune aruncă o excepție NullPointerException

}

catch(NullPointerException ex)

{

System.out.println(„Aici NullPointerException este prinsă”);

arunca ex; //Rearuncarea NullPointerException

}

17. De ce folosiți cuvântul cheie „aruncă” în Java?

Dacă este posibil ca o metodă să arunce o excepție dacă nu a putut fi gestionată, ar trebui să specifice acea excepție folosind cuvântul cheie „throws”. Va fi util pentru funcțiile de apelare ale acelei metode în gestionarea acestei excepții. Sintaxa pentru utilizarea cuvântului cheie „aruncă” este,

return_type method_name(lista_parametrului) aruncă lista_excepții

{

//cod

}

Aici, exception_list este lista de excepții care pot fi aruncate de metodă. Aceste excepții ar trebui separate prin virgule. Un exemplu de cod:

Clasa publică ExceptionHandling

{

public static void main(String[] args)

{

încerca

{

methodWithThrows();

}

catch(NullPointerException ex)

{

System.out.println("NullPointerException aruncată de metoda methodWithThrows() va fi prinsă aici");

}

}

static void methodWithThrows() aruncă NullPointerException

{

String s = nul;

System.out.println(s.length()); //Această instrucțiune aruncă NullPointerException

}

}

18. Este adesea recomandat să păstrați operațiunile de curățare, cum ar fi închiderea resurselor DB în blocul „finally”. De ce este necesar?

Blocul „finally” este întotdeauna executat indiferent de faptul dacă excepțiile sunt ridicate în blocul „try” sau dacă excepțiile ridicate sunt prinse în blocul „catch” sau nu. Menținerea operațiunilor de curățare în blocul „finally” asigură funcționarea acestor operațiuni în orice caz și nu va fi afectată de excepții, care pot sau nu să crească.

19. Cum ați face diferența între final, finally și finalize în Java?

În primul rând, „final” este un cuvânt cheie care poate fi folosit pentru a face ca o variabilă, o metodă sau o clasă să fie neschimbată. Pentru a spune simplu, dacă o variabilă este declarată finală, odată ce este inițializată, valoarea acesteia nu poate fi modificată. Dacă o metodă este declarată finală, nu poate fi suprascrisă sau modificată în subclasă. Dacă o clasă este declarată finală, aceasta nu poate fi extinsă în clase ulterioare.

În al doilea rând, „finally” este un bloc care este folosit în tratarea excepțiilor împreună cu blocurile „try” și „catch”. Acest bloc este întotdeauna executat, indiferent de o excepție ridicată sau dacă excepția ridicată este gestionată. De obicei, acest bloc este folosit pentru a efectua operațiuni de curățare pentru a închide resurse precum conexiunea la baza de date, resursele I/O etc.

În al treilea rând, metoda finalize() este o metodă protejată. Aparține clasei java.lang.Object. Fiecare clasă creată în Java moștenește această metodă. Firul Garbage Collector apelează această metodă înainte ca un obiect să fie eliminat din memorie. Înainte ca un obiect să fie eliminat din memorie, această metodă este utilizată pentru a efectua unele dintre operațiunile de curățare.

protected void finalize() aruncă Throwable

{

//Operațiuni de curățare

}

20. Ce sunt excepțiile personalizate în java?

Clasele de excepție pot fi aruncate în Java conform cerințelor fluxului de program. Aceste excepții sunt numite excepții definite de utilizator. Se mai numesc și excepții personalizate. Aceste excepții trebuie să extindă oricare dintre clasele din ierarhia excepțiilor.

21. Cum ați explica o ClassCastException în Java?

Când JVM-ul nu poate transforma un obiect de un tip într-un alt tip, această excepție este ridicată. Este o excepție RunTimeException.

22. Faceți diferența între aruncare, aruncare și aruncare în Java.

În primul rând, cuvântul cheie „aruncă” este folosit pentru a arunca manual o excepție în Java. Folosind acest cuvânt cheie, este posibil să aruncați o excepție de la orice metodă sau bloc. Cu toate acestea, este esențial ca excepția să fie de tipul clasei java.lang.Throwable sau să aparțină uneia dintre subclasele clasei java.lang.Throwable.

În al doilea rând, cuvântul cheie „aruncă” este folosit în semnătura metodei în Java. Dacă metoda este capabilă să arunce excepții, aceasta este indicată de această metodă. Excepțiile menționate sunt gestionate de funcțiile respective de apelant. Se realizează fie prin utilizarea blocurilor try and catch, fie prin utilizarea cuvântului cheie throws.

În al treilea rând, super-clasa pentru toate tipurile de erori și excepții în Java se numește Throwable. Este membru al pachetului java.lang. JVM sau instrucțiunea throw generează doar instanțe ale acestei clase sau ale subclaselor sale. Blocul catch ar trebui să conțină un singur argument și ar trebui să fie de acest tip sau subclasele sale. În cazul în care sunt create excepții personalizate, acestea ar trebui să extindă și această clasă.

23. Explicați StackOverflowError în Java.

Aceasta este o eroare care este aruncată de JVM atunci când stiva se depășește în timpul de execuție.

24. Este posibil să se suprascrie o metodă de super clasă care aruncă o excepție neverificată cu excepții bifate în subclasă?

Nu este posibil, deoarece dacă o metodă de super clasă aruncă o excepție neverificată, aceasta va fi suprascrisă în subclasă cu aceeași excepție sau cu orice alte excepții nebifate. Dar, nu poate fi înlocuit cu excepțiile bifate.

25. Definiți excepții înlănțuite în Java.

Într-un program, o excepție poate arunca multe excepții prin inducerea unui efect de domino. Acest lucru provoacă un lanț de excepții. Este benefic să cunoaștem locația cauzei reale a excepției. Acest lucru este posibil cu funcția de excepții înlănțuite din Java. Acesta a fost introdus începând cu JDK 1.4. Pentru implementarea excepțiilor înlănțuite în Java, doi constructori noi și două metode noi sunt incluse în clasa Throwable. Acestea sunt,

Constructorii clasei Throwable:

    1. Throwable(Throwable cause): Cauza este excepția care ridică excepția curentă.
    2. Throwable(String msg, Throwable cause): șirul de mesaj este mesajul de excepție. Excepția care ridică excepția actuală este cauza aici.

Metode ale clasei Throwable:

    1. Metoda getCause() : Cauza reală a unei excepții ridicate este returnată de această metodă.
    2. Metoda initCause(Throwable cause) : Cauza excepției de apelare este setată de această metodă.

26. Care clasă este definită ca o super clasă pentru toate tipurile de erori și excepții în Java?

Super-clasa pentru toate tipurile de erori și excepții este java.lang.Throwable în Java.

27. Ce se poate clasifica ca o combinație corectă de try, catch și finally blocks?

O combinație de blocare try and catch.

încerca

{

//încearcă bloc

}

prinde (excepție ex)

{

//captură bloc

}

O combinație de încercare și în final bloc.

încerca

{

//încearcă bloc

}

in cele din urma

{

//în sfârșit blocați

}

O combinație a tuturor celor trei: încercați, blocați, în final blocați.

încerca

{

//încearcă bloc

}

prinde (excepție ex)

{

//captură bloc

}

in cele din urma

{

//în sfârșit blocați

}

28. De ce folosiți metoda printStackTrace()?

Această metodă este utilizată pentru a imprima informații detaliate despre excepția care a avut loc.

29. Care sunt câteva exemple de excepții verificate?

Câteva exemple de excepții verificate includ ClassNotFoundException, SQLException și IOException.

30. Care sunt câteva exemple de excepții neverificate?

Câteva exemple de excepții neverificate includ NullPointerException, ArrayIndexOutOfBoundsException și NumberFormatException.

Citește și: Trebuie să citești 47 de întrebări și răspunsuri la interviu OOPS pentru cei proaspăt și cu experiență

Încheierea

Dacă sunteți interesat să aflați mai multe despre big data, consultați diploma PG în dezvoltare software full-stack de la upGrad și IIIT-B, care este concepută pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, peste 9 proiecte și misiuni, IIIT -B Statut de absolvenți, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.

Dacă sunteți interesat să învățați Data Science și optați pentru o carieră în acest domeniu, consultați Programul Executive PG în Data Science al IIIT-B și upGrad, care este creat pentru profesioniști care lucrează și oferă peste 10 studii de caz și proiecte, ateliere practice practice. , mentorat cu experți din industrie, 1-la-1 cu mentori din industrie, peste 400 de ore de învățare și asistență profesională cu firme de top.

Pregătiți-vă pentru o carieră a viitorului

Aplicați pentru Master of Science în Data Science