728x90
반응형
프로그램에서 예외가 발생했을 경우 예외 처리를 해야한다.
예외 처리의 목적
- 프로그램의 갑작스러운 종료를 막는다.
- 정상 실행을 유지하게 한다.
예외 처리 코드
자바 컴파일러는 일반 예외를 발생시키는 코드를 발견할 경우 예외 처리 코드를 강제적으로 작성하도록 요구한다.
실행 예외는 컴파일러가 체크해주지 않아 개발자의 경험을 바탕으로 예외 처리 코드를 작성해야 한다.
예시1) TryCatchFinallyEx
ClassNotFoundException 오류가 발생한다. 이것은 java.lang.String 클래스가 존지 하지 않기 떄문이다.
그래서 예ㅊ외 처리를 해줘야한다.
Surround with try/catch 를 누르면 자동으로 예외처리 코드가 생성된다.
java.lang.String2 라고 변경해서 넣으면, "클래스가 존재하지 않는다" 라고 나온다.
try-catch-finally블록
생성자 및 메소드 내부에서 작성되어 일반 예외와 실행예외가 발생할 경우 예외처리를 할 수 있도록 한다.
- try 블록에는 예외 발생 가능 코드가 위치 한다.
- try 블록의 코드가 예외 발생없이 정상 실행되면 catch블록의 코드는 실행되지 않고 finally블록의 코드를 실행한다. 만약 try 블록의 코드가 예외 발생되면, catch 블록의 예외처리 코드를 실행한다. 그 후 finally블록의 코드를 실행한다.
- finally블록은 생략 가능하다. try블록과 catch블록에서 return문을 사용하더라도 finall블록은 항상 실행 된다.
예시2) TryCatchFinallyRuntimeExceptionEx
public class TryCatchFinallyRuntimeExceptionEx {
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("실행 매개값의 수가 부족하다.");
return; // 메소드의 실행을 끝냄
}
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("다시 실행하시오.");
}
}
}
※용어 정리
-
예외 처리: 프로그램에서 예외가 발생했을 경우 프로그램의 갑작스러운 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 것이다.
-
try-catch-finally블록: 생성자 내부와 메소드 내부에서 작성되어 일반 예외와 실행 예외가 발생할 경우 예외 처리를 할 수 있도록 해준다.
본 내용은 #혼자공부하는자바 책을 참고해 공부하려 작성했습니다.
728x90
반응형
'Work & Study > JAVA (& 혼공자Java)' 카테고리의 다른 글
자바(Java) -스레드1 (2) | 2020.12.10 |
---|---|
자바(Java) - 예외 종류에 따른 처리 코드 (0) | 2020.12.07 |
자바(Java) - 예외 클래스 (0) | 2020.12.02 |
자바(Java) - 익명 객체2 (익명 구현 객체 생성) (0) | 2020.11.24 |
자바(Java) - 익명 객체1 (익명 자식 객체 생성) (0) | 2020.11.24 |