1. 학습목표
예외처리에 대해 이해할 수 있다.
2.필요 개념 문장정리
프로그램 오류
- 컴파일 에러는 컴파일 할 때 발생하는 에러이고 프로그램의 실행 도중에 발생하는 에러를 런타임 에러라고 한다.
- 실행시 발생할 수 있는 프로그램 오류를 에러와 예외 두가지로 구분한다.
- 에러는 메모리부족이나 스택오버플로우와 같이 일단 발생하면 복구할 수 없는 심각한 오류이고 예외는 발생하더라도 수습될 수 있는 비교적 덜 심각한 것이다.
try - catch 문
- 예외처리란 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성하는 것이며 예외처리의 목적은 예외의 발생으로 인한 실행 중인 프로그램의 갑작스런 비정상 종료를 막고 정상적인 실행상태를 유지할 수 있도록 하는 것이다.
- try {
// 예외가 발생할 가능성이 있는 문장들을 넣는다
}catch (Exception e) {
// 예외가 발생했을 때 처리하기 위한 문장을 적는다. - 예외가 발생한 경우와 발생하지 않은 경우 문장의 실행순서가 달라진다.
- try블럭에서 예외가 발생하면 예외가 발생한 위치 이후에 있는 try블럭의 문장들은 수행되지 않고 예외가 발생하지 않으면 catch블럭의 문장들을 수행하지 않는다.
- catch문에 Exception클래스 타입의 참조변수를 선언한 catch블럭을 사용하면 어떤 종류의 예외가 발생하더라도 catch블럭에 의해 처리된다.
- printStackTrace() : 예외 발생 당시의 호출스택에 있던 메서드의 정보와 예외메세지를 화면에 출력한다.
getMessage() : 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있다.
3. 코드작성
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
File file = new File("example.txt");
try {
FileReader reader = new FileReader(file);
// 파일을 읽어오는 동작 수행
} catch (FileNotFoundException e) {
// FileNotFoundException 발생 시 실행되는 블록
System.out.println("파일을 찾을 수 없습니다.");
e.printStackTrace(); // 예외 스택 트레이스 출력
System.out.println("에러 메시지: " + e.getMessage()); // 예외 메시지 출력
} catch (IOException e) {
// IOException 발생 시 실행되는 블록
System.out.println("파일을 읽어오는 도중 오류가 발생했습니다.");
e.printStackTrace();
System.out.println("에러 메시지: " + e.getMessage());
} finally {
// 파일을 닫거나 기타 정리 작업을 수행하는 블록
System.out.println("파일 처리 완료");
}
}
}
4. 마무리
e.getMessage()에 대해 어떻게 메세지가 던져지는 건지 아직 제대로 이해하지 못했다.
Throwable 클래스에서 상속된 메서드로서 예외 객체에 어떻게 지정된 메세지가 던져지는지 더 공부해봐야겠다.
'언어 기초 > JAVA' 카테고리의 다른 글
클래스와 배열 [JAVA | 학습을 위한 자료 | 김영한 자바 기본] (0) | 2024.06.05 |
---|---|
메서드 [JAVA | 학습을 위한 자료| 김영한 자바 입문] (0) | 2024.06.05 |
[자바의정석 | Chapter 07 객체지향 프로그래밍2] 제어자 (0) | 2024.02.22 |
[자바의정석 | Chapter 07 객체지향 프로그래밍2] super, super() (0) | 2024.02.19 |
[자바의정석 | Chapter 07 객체지향 프로그래밍2] 오버라이딩 (0) | 2024.02.05 |