프로그래밍 언어/JAVA
[JAVA] 예외 종류에 따른 처리 코드
김곰댕
2021. 7. 27. 16:40
728x90
다중 catch
- 여러개의 catch가 있더라도 하나의 catch 블록만 실행됨

예제)
package sec04_multi_catch;
public class CatchByExceptionKindExample
{
public static void main(String[] args)
{
try
{
String data1 = args[0]; //ArrayIndexOutOfBoundsException 발생할 수 있음
String data2 = args[1]; //ArrayIndexOutOfBoundsException 발생할 수 있음
int value1 = Integer.parseInt(data1); //NumberFormatException 발생할 수 있음
int value2 = Integer.parseInt(data2); //NumberFormatException 발생할 수 있음
int result = value1 + value2;
System.out.println(data1 + "+" + data2 + "=" + result);
}
//다중 catch
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("실행 매개값의 수가 부족합니다.");
System.out.println("[실행방법]");
System.out.println("jdava TryCatchFinallyRuntimeExceptionExample num1 num2");
}
catch(NumberFormatException e)
{
System.out.println("숫자로 변환할 수 없습니다.");
}
finally
{
System.out.println("다시 실행하세요.");
}
}
}






catch 순서
- 구체적인 예외를 위에 놔두는 것이 좋음 ( 덜 구체적인 예외가 더 광범위하게 오류를 잡아낼것이기 때문 )


예제)
package sec04_multi_catch;
public class CatchOrderExample
{
public static void main(String[] args)
{
try
{
String data1 = args[0]; //ArrayIndexOutOfBoundsException 발생할 수 있음
String data2 = args[1]; //ArrayIndexOutOfBoundsException 발생할 수 있음
int value1 = Integer.parseInt(data1); //NumberFormatException 발생할 수 있음
int value2 = Integer.parseInt(data2); //NumberFormatException 발생할 수 있음
int result = value1 + value2;
System.out.println(data1 + "+" + data2 + "=" + result);
}
//다중 catch
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("실행 매개값의 수가 부족합니다.");
System.out.println("[실행방법]");
System.out.println("jdava TryCatchFinallyRuntimeExceptionExample num1 num2");
}
catch(Exception e) //그 밖의 다른 예외 발생시 실행
{
System.out.println("숫자로 변환할 수 없습니다.");
}
finally
{
System.out.println("다시 실행하세요.");
}
}
}
멀티(multi) catch
- 자바 7부터는 하나의 catch 블록에서 여러개의 예외 처리가 가능함
- 멀티 catch 다중 catch 서로 의미는 똑같지만 작성 문법이 다름
catch(Array~Exception e)
{
//예외 처리 코드1
}
catch(Number~Exception e)
{
//예외 처리 코드1
}
catch(Exception e)
{
//예외 처리 코드2
}
// 멀티 catch를 사용하여 코드 중복을 줄일 수 있음
(멀티 catch를 사용한다면 예외처리코드1을 2번 작성할 필요가 없음)

예제)
package sec04_multi_catch;
public class MultiCatchExample
{
public static void main(String[] args)
{
try
{
String data1 = args[0]; //ArrayIndexOutOfBoundsException 발생할 수 있음
String data2 = args[1]; //ArrayIndexOutOfBoundsException 발생할 수 있음
int value1 = Integer.parseInt(data1); //NumberFormatException 발생할 수 있음
int value2 = Integer.parseInt(data2); //NumberFormatException 발생할 수 있음
int result = value1 + value2;
System.out.println(data1 + "+" + data2 + "=" + result);
}
//다중 catch
catch(ArrayIndexOutOfBoundsException | NumberFormatException e) //멀티 catch
{
System.out.println("실행 매개값의 수가 부족하거나 숫자로 변환할 수 없음.");
}
catch(Exception e) //그 밖의 다른 예외 발생시 실행
{
System.out.println("알 수 없는 예외 발생");
}
finally
{
System.out.println("다시 실행하세요.");
}
}
}
728x90