Le 30 migliori domande e risposte sull'intervista sulla gestione delle eccezioni [per neofiti ed esperti]

Pubblicato: 2020-09-29

La gestione delle eccezioni è un concetto implementato negli algoritmi per gestire possibili errori di runtime, che possono interrompere il normale flusso di un programma. Alcuni degli errori che possono essere gestiti utilizzando questo concetto sono:

  • ClassNotFoundException
  • IOException
  • SQLException
  • RemoteException
  • RuntimeException:
    • Eccezione aritmetica
    • NullPointerException
    • NumberFormatException
    • IndexOutOfBoundsException
      • Indice della Matrice Fuori Dai Limiti d'Eccezione
      • StringIndexOutOfBoundsException

Il merito di questa implementazione è prevenire un arresto anomalo del programma se si verifica un'eccezione durante l'esecuzione del programma. Senza la gestione delle eccezioni, il programma genererà un errore quando incontra un'eccezione e il resto del programma non verrà eseguito. Tuttavia, l'implementazione di questo concetto fornirà una soluzione alternativa in cui il resto del programma viene eseguito se sono indipendenti rispetto all'eccezione verificata. Per saperne di più, dai un'occhiata ai nostri corsi di scienza dei dati.

Leggi: deve leggere 30 domande e risposte per l'intervista al selenio: guida definitiva

Domande e risposte per l'intervista sulla gestione delle eccezioni

1. Cosa intendi per eccezione?

Si tratta di una condizione anomala che a volte si verifica durante l'esecuzione di un programma. Interrompe il normale flusso del programma. È necessario gestire questa eccezione; in caso contrario, può causare la chiusura improvvisa del programma.

2. Spiega come gestire le eccezioni in Java. Qual è il meccanismo di gestione delle eccezioni alla base del processo?

Ci sono tre parti nel meccanismo di gestione delle eccezioni. Questi sono chiamati:

  • Try block: la sezione del codice che viene prima tentata di essere eseguita e monitorata per qualsiasi eccezione che potrebbe verificarsi.
  • Blocco catch: se viene generata un'eccezione dal blocco 'try', viene catturata da questa sezione di codice.
  • Blocco finale: il codice in questa sezione viene sempre eseguito indipendentemente dalle eccezioni rilevate nel blocco 'try', se presenti. Anche se non ci sono eccezioni, il codice in questo blocco verrà eseguito.

3. È possibile mantenere altre istruzioni tra i blocchi "try", "catch" e "finally"?

Si sconsiglia di inserire dichiarazioni tra le sezioni di blocchi "try", "catch" e "finally", poiché formano un'intera unità del meccanismo di gestione delle eccezioni.

Tentativo

{

//Codice monitorato per le eccezioni.

}

//Non puoi conservare le dichiarazioni qui

cattura (Eccezione ex)

{

//Cattura le eccezioni generate dal blocco try, se presenti.

}

//Non puoi conservare le dichiarazioni qui

finalmente

{

//Questo blocco viene sempre eseguito indipendentemente dalle eccezioni.

}

4. Sarà possibile includere solo un blocco "try" senza i blocchi "catch" e "finally"?

Questo darebbe un errore di compilazione. È necessario che il blocco "try" sia seguito da un blocco "catch" o da un blocco "finally", se non entrambi. È necessario uno dei blocchi "catch" o "finally" in modo che il flusso di gestione delle eccezioni non venga interrotto.

5. Sarà possibile conservare le dichiarazioni dopo il blocco 'finalmente' se il controllo sta tornando dal blocco definitivo stesso?

Ciò comporterà un errore di blocco catch irraggiungibile. Questo perché il controllo tornerà dal blocco 'finalmente' stesso. Il compilatore non eseguirà il codice dopo la riga con l'eccezione. Ecco perché l'esecuzione mostrerà un errore di codice irraggiungibile.

Sogni di studiare all'estero? Ecco il programma giusto per te

6. Spiegare un errore di blocco catch irraggiungibile.

Nel caso di blocchi catch multipli, l'ordine in cui sono posizionati i blocchi catch va dal più specifico al più generale. Cioè, le sottoclassi di un'eccezione dovrebbero venire prima, quindi seguiranno le super classi. Nel caso in cui le super classi vengano mantenute per prime, seguite dalle sottoclassi successive, il compilatore mostrerà un errore catch block irraggiungibile.

gestione delle eccezioni di classe pubblica

{

public static void main(String[] args)

{

Tentativo

{

int i = Intero.parseInt("test");

//Questa istruzione genererà un'eccezione NumberFormatException //perché l'input fornito è una stringa, mentre il //formato specificato è intero.

}

cattura (Eccezione ex)

{

System.out.println("Questo blocco gestisce tutti i tipi di eccezioni");

//Tutti i tipi di eccezioni possono essere gestiti in questo //blocco poiché è una super classe di eccezioni.

}

catch(NumberFormatException ex)

{

//Questo darà un errore in fase di compilazione

//Questo blocco diventerà irraggiungibile in quanto il

//l'eccezione verrebbe già rilevata dal blocco //catch sopra

}

}

}

7. Considera tre affermazioni in un blocco 'try': statement1, statement2 e statement3. È seguito da un blocco "catch" per catturare le eccezioni che si sono verificate durante l'esecuzione del blocco "try". Si supponga che l'eccezione venga generata in statement2. Pensi che l'istruzione3 verrà eseguita?

L'istruzione 3 non verrà eseguita. Se in qualsiasi momento viene generata un'eccezione dal blocco 'try', il codice rimanente dopo l'eccezione non verrà eseguito. Invece, il controllo del flusso arriverà direttamente al blocco 'catch'.

8. Differenziare errori ed eccezioni in Java.

La differenza fondamentale tra errore ed eccezione è che mentre l'errore è causato dall'ambiente in cui è in esecuzione la JVM (Java Virtual Machine), le eccezioni sono causate dal programma stesso. Ad esempio, OutOfMemory è un errore che si verifica quando la JVM esaurisce la propria memoria.

Tuttavia, NullPointerException è un'eccezione che si verifica quando il programma tenta di accedere a un oggetto nullo. Non è possibile eseguire il ripristino da un errore. Quindi, l'unica soluzione a un errore è terminare l'esecuzione. Tuttavia, è possibile risolvere le eccezioni utilizzando i blocchi try and catch o restituendo eccezioni alla funzione chiamante.

Da leggere: Domande e risposte per l'intervista Java

9. Quali sono i tipi di eccezioni? Spiegali.

Esistono due tipi di eccezioni:

Eccezioni controllate

Il tipo di eccezioni conosciute e riconosciute dal compilatore. Queste eccezioni possono essere verificate solo in fase di compilazione. Pertanto, sono anche chiamate eccezioni in fase di compilazione. Questi possono essere gestiti utilizzando i blocchi try and catch o utilizzando una clausola throw. Se queste eccezioni non vengono gestite in modo appropriato, produrranno errori in fase di compilazione. Gli esempi includono le sottoclassi di java.lang.Exception ad eccezione di RunTimeException.

Eccezioni deselezionate

Il tipo di eccezioni non riconosciute dal compilatore. Si verificano solo in fase di esecuzione. Pertanto, sono anche chiamate eccezioni di runtime. Non vengono controllati in fase di compilazione. Pertanto, anche dopo una compilazione riuscita, possono causare la chiusura anticipata del programma se non gestiti in modo appropriato. Gli esempi includono le sottoclassi di java.lang.RunTimeException e java.lang.Error.

10. Qual è la gerarchia delle eccezioni in Java?

java.lang.Throwable è una super classe di tutti gli errori e le eccezioni in Java. Questa classe estende la classe java.lang.Object. L'argomento di catch block dovrebbe essere solo il suo tipo o il suo tipo di sottoclasse. La classe Throwable comprende due sottoclassi:

  1. java.lang.Error : questa è una super classe per tutti i tipi di errore in Java. Gli errori comuni inclusi in questo sono:
    1. java.lang.VirtualMachineError: Sotto questo –
      1. StackOverFlowError
      2. Errore di memoria esaurita
    2. java.lang.AssertionError
    3. java.lang.LinkageError: Sotto questo –
      1. NoClassDefFoundError
      2. IncompatibileClassChangeError
  2. java.lang.Exception: questa è una super classe di tutti i tipi di eccezioni in Java. Le eccezioni comuni sotto questo sono:
    1. RunTimeException
      1. Eccezione aritmetica
      2. NumberFormatException
      3. NullPointerException
      4. Indice della Matrice Fuori Dai Limiti d'Eccezione
      5. ClassCastException
    2. java.lang.InterruptedException
    3. java.lang.IOException
    4. java.lang.SQLException
    5. java.lang.ParseException

11. Cosa sono le eccezioni di runtime in Java? Fai alcuni esempi.

Le eccezioni che si verificano in fase di esecuzione sono chiamate eccezioni di esecuzione. Il compilatore non è in grado di riconoscere queste eccezioni, come le eccezioni non controllate. Include tutte le sottoclassi di java.lang.RunTimeException e java.lang.Error. Gli esempi includono NumberFormatException, NullPointerException, ClassCastException, ArrayIndexOutOfBoundException, StackOverflowError ecc.

12. Definire OutOfMemoryError in Java.

È la sottoclasse di java.lang.Error che si verifica quando la JVM esaurisce la memoria.

13. Distinguere tra NoClassDefFoundError e ClassNotFoundException in Java.

Sia NoClassDefFoundError che ClassNotFoundException si verificano quando una particolare classe non viene trovata in fase di esecuzione. Tuttavia, si verificano in scenari diversi. NoClassDefFoundError si verifica quando si verifica un errore perché una classe particolare era presente in fase di compilazione ma mancava in fase di esecuzione. ClassNotFoundException si verifica quando viene rilevata un'eccezione per un'applicazione che tenta di caricare una classe in fase di esecuzione che non è aggiornata nel percorso di classe.

14. Il blocco "finalmente" viene eseguito se uno dei blocchi "try" o "catch" restituisce il controllo?

Il blocco "finalmente" viene sempre eseguito indipendentemente dal fatto che i blocchi try o catch restituiscano il controllo o meno.

15. È possibile generare un'eccezione manualmente? Se sì, spiega come.

È possibile generare un'eccezione manualmente. È fatto usando la parola chiave 'lanciare'. La sintassi per generare un'eccezione manualmente è

throw InstanceOfThrowableType;

Ecco un esempio di utilizzo della parola chiave 'throw' per generare un'eccezione manualmente.

Tentativo

{

NumberFormatException ex = new NumberFormatException(); //Qui creiamo un oggetto per NumberFormatException in modo esplicito

gettare ex; //lancio dell'oggetto NumberFormatException in modo esplicito utilizzando la parola chiave throw

}

catch(NumberFormatException ex)

{

System.out.println("In questo blocco, l'oggetto NumberFormatException generato in modo esplicito può essere catturato.");

}

Leggi: Le 35 migliori domande e risposte per le interviste di primavera: Guida definitiva

16. Cosa intendi per rilanciare un'eccezione in Java?

Le eccezioni che vengono sollevate nel blocco 'try' vengono gestite nel blocco 'catch'. Se il blocco 'catch' non è in grado di gestire quell'eccezione, è possibile che possa rieseguire la stessa eccezione usando la parola chiave 'throw'. Questo meccanismo è chiamato rilancio di un'eccezione. L'implementazione è la seguente:

Tentativo

{

Stringa s = nullo;

System.out.println(s.length()); //Questa istruzione genera un'eccezione NullPointerException

}

catch(NullPointerException ex)

{

System.out.println("Qui viene catturata l'eccezione NullPointerException");

gettare ex; //Rilancio dell'eccezione NullPointerException

}

17. Perché usi la parola chiave 'throws' in Java?

Se è possibile che un metodo generi un'eccezione se non può essere gestita, dovrebbe specificare tale eccezione utilizzando la parola chiave 'throws'. Sarà utile alle funzioni del chiamante di quel metodo nella gestione di tale eccezione. La sintassi per l'utilizzo della parola chiave 'tira' è,

tipo_ritorno nome_metodo(elenco_parametri) genera un elenco_eccezione

{

//codice

}

Qui, exception_list è l'elenco delle eccezioni che possono essere generate dal metodo. Queste eccezioni devono essere separate da virgole. Un esempio del codice:

gestione delle eccezioni di classe pubblica

{

public static void main(String[] args)

{

Tentativo

{

metodoWithThrows();

}

catch(NullPointerException ex)

{

System.out.println("NullPointerException generata dal metodo methodWithThrows() verrà catturata qui");

}

}

static void methodWithThrows() genera NullPointerException

{

Stringa s = nullo;

System.out.println(s.length()); //Questa istruzione genera NullPointerException

}

}

18. Si consiglia spesso di mantenere le operazioni di pulizia come la chiusura delle risorse DB all'interno del blocco 'finalmente'. Perché è necessario?

Il blocco "finalmente" viene sempre eseguito indipendentemente dal fatto se le eccezioni vengono sollevate nel blocco "try" o se le eccezioni sollevate vengono catturate nel blocco "catch" o meno. Mantenere le operazioni di clean up nel blocco 'finalmente' garantisce in ogni caso il funzionamento di queste operazioni e non sarà interessato da eccezioni, che possono aumentare o meno.

19. Come distingueresti tra final, final e finalize in Java?

In primo luogo, 'final' è una parola chiave che può essere utilizzata per rendere immutabile una variabile, un metodo o una classe. In parole povere, se una variabile viene dichiarata come finale, una volta inizializzata, il suo valore non può essere modificato. Se un metodo viene dichiarato come finale, non può essere sovrascritto o modificato nella sottoclasse. Se una classe è dichiarata come finale, non può essere estesa ad altre classi.

In secondo luogo, "finalmente" è un blocco che viene utilizzato nella gestione delle eccezioni insieme ai blocchi "try" e "catch". Questo blocco viene sempre eseguito indipendentemente da un'eccezione sollevata o se l'eccezione sollevata viene gestita. Di solito, questo blocco viene utilizzato per eseguire operazioni di pulizia per chiudere le risorse come la connessione al database, le risorse di I/O, ecc.

Terzo, il metodo finalize() è un metodo protetto. Appartiene alla classe java.lang.Object. Ogni classe creata in Java eredita questo metodo. Il thread del Garbage Collector chiama questo metodo prima che un oggetto venga rimosso dalla memoria. Prima che un oggetto venga rimosso dalla memoria, questo metodo viene utilizzato per eseguire alcune delle operazioni di pulizia.

protected void finalize() lancia Throwable

{

//Operazioni di pulizia

}

20. Cosa sono le eccezioni personalizzate in Java?

Le classi di eccezione possono essere generate in Java secondo i requisiti del flusso del programma. Queste eccezioni sono chiamate eccezioni definite dall'utente. Sono anche chiamate eccezioni personalizzate. Queste eccezioni devono estendere una qualsiasi delle classi nella gerarchia delle eccezioni.

21. Come spiegheresti una ClassCastException in Java?

Quando la JVM non è in grado di eseguire il cast di un oggetto di un tipo su un altro tipo, viene sollevata questa eccezione. È una RunTimeException.

22. Distinguere tra lancio, lancio e lancio in Java.

Innanzitutto, la parola chiave "throw" viene utilizzata per generare un'eccezione manualmente in Java. Usando questa parola chiave, è possibile generare un'eccezione da qualsiasi metodo o blocco. Tuttavia, è essenziale che l'eccezione sia di tipo java.lang.Throwable o appartenga a una delle sottoclassi della classe java.lang.Throwable.

In secondo luogo, la parola chiave "throws" viene utilizzata nella firma del metodo in Java. Se il metodo è in grado di generare eccezioni, viene indicato da questo metodo. Le eccezioni menzionate sono gestite dalle rispettive funzioni del chiamante. Viene fatto usando i blocchi try and catch o usando la parola chiave throws.

Terzo, la super classe per tutti i tipi di errori ed eccezioni in Java si chiama Throwable. È un membro del pacchetto java.lang. La JVM o l'istruzione throw genera solo istanze di questa classe o delle sue sottoclassi. Il blocco catch dovrebbe contenere un solo argomento e dovrebbe essere di questo tipo o delle sue sottoclassi. Nel caso in cui vengano create eccezioni personalizzate, dovrebbero estendere anche questa classe.

23. Spiegare StackOverflowError in Java.

Questo è un errore che viene generato dalla JVM quando lo stack va in overflow in runtime.

24. È possibile sovrascrivere un metodo di superclasse che genera un'eccezione non controllata con eccezioni verificate nella sottoclasse?

Non è possibile perché se un metodo di superclasse genera un'eccezione non verificata, verrà sovrascritta nella sottoclasse con la stessa eccezione o qualsiasi altra eccezione non verificata. Ma non può essere sovrascritto con eccezioni controllate.

25. Definire le eccezioni concatenate in Java.

In un programma, un'eccezione può generare molte eccezioni inducendo un effetto domino. Ciò provoca una catena di eccezioni. È utile conoscere la posizione della causa effettiva dell'eccezione. Ciò è possibile con la funzione di eccezioni concatenate in Java. Questo è stato introdotto da JDK 1.4. Per l'implementazione di eccezioni concatenate in Java, nella classe Throwable sono inclusi due nuovi costruttori e due nuovi metodi. Questi sono,

Costruttori di classe Throwable:

    1. Throwable(Throwable cause): la causa è l'eccezione che genera l'eccezione corrente.
    2. Throwable(String msg, Throwable cause): la stringa msg è il messaggio di eccezione. L'eccezione che genera l'eccezione corrente è la causa qui.

Metodi di classe Throwable:

    1. metodo getCause() : la vera causa di un'eccezione sollevata viene restituita da questo metodo.
    2. Metodo initCause(Throwable cause): la causa dell'eccezione di chiamata è impostata da questo metodo.

26. Quale classe è definita come superclasse per tutti i tipi di errori ed eccezioni in Java?

La super classe per tutti i tipi di errori ed eccezioni è java.lang.Throwable in Java.

27. Cosa può classificare come una corretta combinazione di try, catch e infine blocchi?

Una combinazione di try and catch block.

Tentativo

{

//prova a bloccare

}

cattura (Eccezione ex)

{

//blocca il blocco

}

Una combinazione di prova e infine blocco.

Tentativo

{

//prova a bloccare

}

finalmente

{

//finalmente blocco

}

Una combinazione di tutti e tre: prova, blocca, infine blocca.

Tentativo

{

//prova a bloccare

}

cattura (Eccezione ex)

{

//blocca il blocco

}

finalmente

{

//finalmente blocco

}

28. Perché usi il metodo printStackTrace()?

Questo metodo viene utilizzato per stampare informazioni dettagliate sull'eccezione che si è verificata.

29. Quali sono alcuni esempi di eccezioni verificate?

Alcuni esempi di eccezioni verificate includono ClassNotFoundException, SQLException e IOException.

30. Quali sono alcuni esempi di eccezioni non controllate?

Alcuni esempi di eccezioni non controllate includono NullPointerException, ArrayIndexOutOfBoundsException e NumberFormatException.

Leggi anche: Deve leggere 47 domande e risposte per l'intervista OOPS per matricole ed esperti

Avvolgendo

Se sei interessato a saperne di più sui big data, dai un'occhiata al diploma PG di upGrad e IIIT-B in sviluppo software full-stack, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, oltre 9 progetti e incarichi, IIIT -B Status di ex alumni, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Se sei interessato all'apprendimento della scienza dei dati e opta per una carriera in questo campo, dai un'occhiata al programma Executive PG in Data Science di IIIT-B e upGrad, creato per i professionisti che lavorano e offre oltre 10 casi di studio e progetti, workshop pratici pratici , tutoraggio con esperti del settore, 1 contro 1 con mentori del settore, oltre 400 ore di apprendimento e assistenza al lavoro con le migliori aziende.

Prepararsi per una carriera del futuro

Richiedi il Master of Science in Data Science