Blocco multi-cattura Java
Un blocco try può essere seguito da uno o più blocchi catch. Ogni blocco catch deve contenere un gestore di eccezioni diverso. Pertanto, se è necessario eseguire attività diverse al verificarsi di eccezioni diverse, utilizzare il blocco multi-catch Java.
Punti da ricordare
- Alla volta si verifica solo un'eccezione e alla volta viene eseguito solo un blocco catch.
- Tutti i blocchi catch devono essere ordinati dal più specifico al più generale, ovvero catch per ArithmeticException deve precedere catch per Exception.
Diagramma di flusso del blocco multicattura
Esempio 1
Vediamo un semplice esempio di blocco multi-catch Java.
MultipleCatchBlock1.java
public class MultipleCatchBlock1 { public static void main(String[] args) { try{ int a[]=new int[5]; a[5]=30/0; } catch(ArithmeticException e) { System.out.println('Arithmetic Exception occurs'); } catch(ArrayIndexOutOfBoundsException e) { System.out.println('ArrayIndexOutOfBounds Exception occurs'); } catch(Exception e) { System.out.println('Parent Exception occurs'); } System.out.println('rest of the code'); } }Provalo adesso
Produzione:
come disattivare la modalità sviluppatore su android
Arithmetic Exception occurs rest of the code
Esempio 2
MultipleCatchBlock2.java
public class MultipleCatchBlock2 { public static void main(String[] args) { try{ int a[]=new int[5]; System.out.println(a[10]); } catch(ArithmeticException e) { System.out.println('Arithmetic Exception occurs'); } catch(ArrayIndexOutOfBoundsException e) { System.out.println('ArrayIndexOutOfBounds Exception occurs'); } catch(Exception e) { System.out.println('Parent Exception occurs'); } System.out.println('rest of the code'); } }Provalo adesso
Produzione:
ArrayIndexOutOfBounds Exception occurs rest of the code
In questo esempio, try block contiene due eccezioni. Ma alla volta si verifica solo un'eccezione e viene eseguito il blocco catch corrispondente.
MultipleCatchBlock3.java
public class MultipleCatchBlock3 { public static void main(String[] args) { try{ int a[]=new int[5]; a[5]=30/0; System.out.println(a[10]); } catch(ArithmeticException e) { System.out.println('Arithmetic Exception occurs'); } catch(ArrayIndexOutOfBoundsException e) { System.out.println('ArrayIndexOutOfBounds Exception occurs'); } catch(Exception e) { System.out.println('Parent Exception occurs'); } System.out.println('rest of the code'); } }Provalo adesso
Produzione:
Arithmetic Exception occurs rest of the code
Esempio 4
In questo esempio, generiamo NullPointerException, ma non forniamo il tipo di eccezione corrispondente. In tal caso, il blocco catch contenente la classe di eccezione genitore Eccezione verrà invocato.
MultipleCatchBlock4.java
cosa sono i selettori nei css
public class MultipleCatchBlock4 { public static void main(String[] args) { try{ String s=null; System.out.println(s.length()); } catch(ArithmeticException e) { System.out.println('Arithmetic Exception occurs'); } catch(ArrayIndexOutOfBoundsException e) { System.out.println('ArrayIndexOutOfBounds Exception occurs'); } catch(Exception e) { System.out.println('Parent Exception occurs'); } System.out.println('rest of the code'); } }Provalo adesso
Produzione:
Parent Exception occurs rest of the code
Esempio 5
Vediamo un esempio, per gestire l'eccezione senza mantenere l'ordine delle eccezioni (ovvero dalla più specifica alla più generale).
MultipleCatchBlock5.java
class MultipleCatchBlock5{ public static void main(String args[]){ try{ int a[]=new int[5]; a[5]=30/0; } catch(Exception e){System.out.println('common task completed');} catch(ArithmeticException e){System.out.println('task1 is completed');} catch(ArrayIndexOutOfBoundsException e){System.out.println('task 2 completed');} System.out.println('rest of the code...'); } }Provalo adesso
Produzione:
Compile-time error