프로그램 오류
1. 컴파일 에러: 컴파일 도중 발생하는 에러
2. 런타임 에러: 실행 시 발생하는 에러
3. 논리적 에러: 실행은 되지만 의도와 다르게 동작하는것
에러 vs 예외
에러: 프로그램 코드에 의해 수습될 수 없는 심각한 오류
예외: 프로그램 코드에 의해 수습될 수 있는 오류
예외 클래스 계층구조
Exception 클래스들: 외적인 요인에 의해 발생하는 예외
RuntimeException 클래스들: 프로그래머의 실수로 발생하는 예외
Tip
1. printStackTree(): 예외 발생 당시의 호출스택에 있던 메서드 정보와 예외 메시지를 화면에 출력한다
2. getMessage(): 발생한 예외클래스의 인스턴스에 저장된 메시지를 받을 수 있다.
메서드에 예외 선언
메서드 내에서 예외 처리 안하고 발생하는 예외을 명시하는 방법도 있다.
try - with - resource
try {
fls = new FileInputStream("score.dat");
dis = new DataInputStrea(fls);
} catch(IOException ie) {
ie.printStackTrace();
} finally {
try {
dls.close();
} catch(IOException ie) {
ie.printStackTrace();
}
}
와 같은 문제를 해결하기 위해 아래와 같이 작성할 수 있다.
try(FileInputStream fis = new FileInputStream("score.dat");
DataInputStream dis = new DataInputStream(fls)) {
while(true) {
score = dls.readInt();
System.out.println(score);
sum += score;
}
} catch(EOFException e) {
System.out.println("점수의 총합은 "+sum+"입니다.");
} catch(IOException ie) {
ie.printStackTrace();
}
try - with -resource 문의 괄호 안에서 생성된 객체는 try 블럭을 벗어나면 자동으로 close()가 호출된다. 이를 위해 괄호안에서 생성된 객체의 클래스가 AutoCloseable이라는 인테페이스를 구현해야한다.
CloseException은 Suppressed되고 다른 Exception에 저장된다.
'Java' 카테고리의 다른 글
[Java] java.lang 패키지 & 유용한 클래스들 (0) | 2020.11.15 |
---|---|
[Java] 객체지향 프로그래밍 (0) | 2020.11.15 |
[Java] 배열 (0) | 2020.11.11 |
[Java] 변수 (0) | 2020.11.11 |
[Java] 자바란 (0) | 2020.11.11 |