Daily coding
Java Basic : day 7 - Exception 예외처리1 본문
Exception :
예외 != 에러 (개발자가 유지 보수하기 위함)
- 예외가 발생해도 프로그램 멈추지 않고 동작하지만
문제가 발생한 경우에 막아주기 위한 용도로 사용
- 문제의 발생과 뒤처리가 목적
예시 (가장 대표적인 예외들)
1. 숫자입력에 1 2 3 (O) , 'A' --> ? (예외 발생)
=> NumberFormatException : 숫자 입력에 문자가 들어왔을 때 / 반대의 경우 등
2. 배열에 할당된 범위를 벗어나서 데이터를 저장하려고 할 때
int arr[] = new int[3];
arr[3] = 1; // 예외발생
=> ArrayIndexOutOfBoundsException
3. 자바에서 API를 import하지 않았을 때
Scanner sc = new Scanner(System.in);
// import하지 않고 사용
=> ClassNotFoundException
4. file을 불러 왔으나 없는 경우
=> FileNotFoundException
* 예외처리 방법 try-catch
try{
// 예외가 발생할 가능성이 있는 소스코드
}catch(NumberFormatException e) { <--- 예외는 여러 종류별로 처리가 가능하지만
// 예외가 발생한 후 처리
}catch(Exception e) { <--- Exception은 가장 넓은 범위이기 때문에 작은 범위의 예외부터 처리하도록 한다.
// 예외가 발생한 후 처리
}
finally { <--- 예외확인과 예외처리 이후 뒤처리
(파일 닫기나 DB관련하여 예외처리 후
심각한 손상 가능성이 있는 저장매체를 닫아주고 원상복구해준다.)
// 무조건 실행되는 코드 ( 뒤처리 )
// 예를 들면
파일close;
DB 원상복구 -> rollback / undo
}
int num[] = { 11, 22, 33 };
System.out.println("프로그램 시작 ");
try {
// 예외 발생 코드임
for (int i = 0; i < 4; i++) {
System.out.println(num[i]);
}
System.out.println("배열 출력 완료 ");
} catch (ArrayIndexOutOfBoundsException e) {
// 주로 아래 세가지 방법을 사용해 예외 메세지를 출력
System.out.println("배열 범위 초과 ");
//e.printStackTrace();
//System.out.println(e.getMessage());
return;
}finally { // 무조건 실행되는 영역
// 원상복구(+뒤처리)하기 위한 코드
// catch문에서 return으로 빠져나가도 실행됨.
System.out.println("finally 무조건 실행됨.");
}
System.out.println("프로그램 끝 ");
// 예외가 생기면 위의 문장은 출력되지 않음
// 이유 : catch문에서 예외발생시 return(main 메소드 종료)했기 때문
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 7 - Exception 예외처리3 (0) | 2019.11.26 |
---|---|
Java Basic : day 7 - Exception 예외처리2 (0) | 2019.11.26 |
Java Basic : day 7 - Overload 오버로딩 (0) | 2019.11.26 |
Java Basic : day 7 - 가변인수란? (0) | 2019.11.26 |
Java Basic : day 6 - Example 08 : Baseball게임 소스코드 메소드 분리하기 (0) | 2019.11.26 |