Bloc Java Multi-catch
Un bloc try pot anar seguit d'un o més blocs catch. Cada bloc catch ha de contenir un controlador d'excepcions diferent. Per tant, si heu de realitzar tasques diferents quan es produeixen diferents excepcions, utilitzeu el bloc multi-catch java.
Punts a recordar
- A la vegada només es produeix una excepció i alhora només s'executa un bloc catch.
- Tots els blocs catch s'han d'ordenar del més específic al més general, és a dir, catch per a ArithmeticException ha d'anar abans de catch per a Exception.
Diagrama de flux del bloc multi-catch
Exemple 1
Vegem un exemple senzill de bloc 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'); } }Prova-ho ara
Sortida:
fent que l'script de shell sigui executable
Arithmetic Exception occurs rest of the code
Exemple 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'); } }Prova-ho ara
Sortida:
ArrayIndexOutOfBounds Exception occurs rest of the code
En aquest exemple, el bloc try conté dues excepcions. Però a la vegada només es produeix una excepció i s'executa el seu bloc catch corresponent.
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'); } }Prova-ho ara
Sortida:
Arithmetic Exception occurs rest of the code
Exemple 4
En aquest exemple, generem NullPointerException, però no hem proporcionat el tipus d'excepció corresponent. En aquest cas, el bloc catch que conté la classe d'excepció pare Excepció voluntat invocada.
MultipleCatchBlock4.java
10 de 50.00
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'); } }Prova-ho ara
Sortida:
Parent Exception occurs rest of the code
Exemple 5
Vegem-ne un exemple, per gestionar l'excepció sense mantenir l'ordre d'excepcions (és a dir, del més específic al més general).
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...'); } }Prova-ho ara
Sortida:
Compile-time error