프로그램에서 예외가 발생했을 경우 프로그램의 갑작스러운 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 코드를
예외 처리 코드라고 한다.
try-catch-finally 블록은 생성자 내부와 메소드 내부에서 작성되어
일반 예외와 샐행 예외가 발생할 경우 예외 처리를 할 수 있도록 해준다.
try-catch-finally 블록
try 블록 - 예외 발생 가능 코드 작성
catch 블록 - 예외 처리 코드 작성
finally 블록 - 실행문 (항상 실행, 생략 가능)
try 블록의 코드가 예외 발생 없이 정상 실행되면 catch 블록의 코드는 실행되지 않고, finally 블록의 코드를 실행한다.
만약 try 블록에서 예외가 발생하면 즉시 실행을 멈추고 catch 블록으로 이동하여 예외 처리 코드를 실행한다.
catch 블록의 실행이 끝나면 finally 블록의 코드를 실행한다.
(finally 블록은 옵션으로 생략이 가능하고, 예외 발생 여부와 관계없이 항상 실행된다.)
일반 예외 처리
public class TryCatchFinallyExample {
public static void main(String[] args) {
try {
Class clazz = Class.forName("java.lang.String2");
System.out.println("클래스를 찾았습니다.");
} catch(ClassNotFoundException e) {
System.out.println("클래스가 존재하지 않습니다.");
}
finally {
System.out.println("프로그램을 안전하게 종료합니다.");
}
}
}
실행 예외 처리
public class TryCatchFinallyRuntimeExceptionExample {
public static void main(String[] args) {
String data1 = null;
String data2 = null;
try {
data1 = args[0];
data2 = args[1];
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("실행 매개값의 수가 부족합니다.");
System.out.println("[실행 방법]");
System.out.println("java TryCatchFinallyRuntimeExceptionExample num1 num2");
return; // 다음 try문이 실행되지 않도록 중지시킨다.
}
try {
int value1 = Integer.parseInt(data1);
int value2 = Integer.parseInt(data2);
int result = value1 + value2;
System.out.println(data1 + "+" + data2 + "=" + result);
} catch(NumberFormatException e) {
System.out.println("숫자로 변환할 수 없습니다.");
} finally {
System.out.println("다시 실행해 주세요.");
}
}
}
'개발 공부 > JAVA' 카테고리의 다른 글
자동 리소스 닫기(try-with-resources) (0) | 2021.06.18 |
---|---|
다중 catch / 멀티 catch (0) | 2021.06.18 |
실행 예외 (RuntimeException) 종류 (0) | 2021.06.18 |
예외(Exception) (0) | 2021.06.18 |
디폴트 메소드와 인터페이스 확장(java8부터 허용) (0) | 2021.06.11 |