logo

Java 여러 예외 포착

Java 멀티캐치 블록

try 블록 뒤에는 하나 이상의 catch 블록이 올 수 있습니다. 각 catch 블록에는 서로 다른 예외 처리기가 포함되어야 합니다. 따라서 서로 다른 예외가 발생할 때 서로 다른 작업을 수행해야 한다면 java multi-catch 블록을 사용하세요.

기억해야 할 점

  • 한 번에 하나의 예외만 발생하고 한 번에 하나의 catch 블록만 실행됩니다.
  • 모든 catch 블록은 가장 구체적인 것부터 가장 일반적인 것 순서로 정렬되어야 합니다. 즉, ArithmeticException에 대한 catch는 Exception에 대한 catch보다 먼저 와야 합니다.

멀티캐치 블록 흐름도

Java 여러 예외 포착

실시예 1

Java multi-catch 블록의 간단한 예를 살펴보겠습니다.

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'); } } 
지금 테스트해보세요

산출:

타이프스크립트 날짜 유형
 Arithmetic Exception occurs rest of the code 

실시예 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'); } } 
지금 테스트해보세요

산출:

 ArrayIndexOutOfBounds Exception occurs rest of the code 

이 예에서 try 블록에는 두 가지 예외가 포함되어 있습니다. 그러나 한 번에 하나의 예외만 발생하고 해당 catch 블록이 실행됩니다.

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'); } } 
지금 테스트해보세요

산출:

 Arithmetic Exception occurs rest of the code 

실시예 4

이 예에서는 NullPointerException을 생성했지만 해당 예외 유형을 제공하지 않았습니다. 이러한 경우 상위 예외 클래스를 포함하는 catch 블록은 예외 호출됩니다.

MultipleCatchBlock4.java

우분투의 ipconfig
 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'); } } 
지금 테스트해보세요

산출:

 Parent Exception occurs rest of the code 

실시예 5

예외의 순서를 유지하지 않고(즉, 가장 구체적인 것부터 가장 일반적인 것까지) 예외를 처리하는 예를 살펴보겠습니다.

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...'); } } 
지금 테스트해보세요

산출:

 Compile-time error