| 1. Basics | 클래스, 객체, 변수, 메서드 // 생성자, 초기화 |
| 2. Advanced | 상속, 오버라이딩 // package, import, modifiers, 다형성 // 추상클래스, interface, 파일과 예외처리, 내부클래스 |
| 9. 파일과 예외처리 | 1. 파일 입출력 클래스 2. 파일 쓰는 법 3. 컴파일 오류를 없애는 방법 2가지 4. try-catch 더 알아보기 ㄴ4.1. ArithmeticException ㄴ4.2 try-catch문 실행순서 ㄴ여러 catch 문 5. 프로그램 오류 6. 예외 클래스 7. finally ㄴ7.1. finally ㄴ7.2.자원 자동 변환 9. throw |
9.1. 파일 입출력 클래스
-XXInputStream, XXReader: 읽기(입력)
-XXOutputStream, XXWriter: 쓰기(출력)

9.2. 파일 쓰는 법
'3단계'
-파일을 열고
FileOutputStream outfile = new FileOutputStream("c:/out1.txt");
-파일에 쓰고
outfile.write("test writing!".getBytes());
-파일을 닫음
outfile.close();
9.3. 컴파일 오류를 없애는 방법 2가지

=> Exception 처리를 하지 않았다는 오류
즉, 프로그램에서 제어할 수 없는 상태가 발생할 수 있다는 의미
- 컴파일 오류를 없애는 방법 1_throw 삽입

- 컴파일 오류를 없애는 방법2_try-catch 삽입
try{
FileOutputStream outfile =
new FileOutputStream("c:/out1.txt");
outfile.write("test writing!" .getBytes());
outfile.close();
} catch (IOException e) {
//예외가 발생했을 때 처리 코드를 여기에 넣기 ex.close
}
try 블록: Exception이 나타날 수 있는 구간
catch 블록: 처리 코드

9.4. try-catch 더 알아보기
9.4.1 0으로 나누기_ArithmeticException
정수는 0으로 나누기 불가(실수는 가능) -> 예외처리구문 추가

9.4.2 try-catch문 실행 순서

- 정상 실행
예외가 발생하지 않았으므로 catch 블럭의 문장 실행되지 않음 - 예외 발생
System.out.println(0/0); 에서 예외가 발생했으므로 try 블록을 바로 벗어남
-> catch 블럭의 문장이 실행됨
-> 전체 try-catch문을 벗어나서 다음 문장(System.out.println(6); 실행
9.4.3 여러 catch 문_모르겠다
서로 다른 종류의 Exception 처리 방법

9.4.4 Exception 참조변수
- printStackTrcae(): 예외발생 당시의 호출스택(Call stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력
- getMessage(): 발생한 예외클래스의 인스턴스에 저장된 메시지를 변환

9.5 프로그램 오류
컴파일 에러: 컴파일 시 발생
런타임 에러: 실행할 시 발생
- 에러
-프로그램 코드에 의해서 수습될 수 없는 심각한 오류
-메모리 부족(OutOfMemoryError), 스택오버플로우(StackOverFlowError)
-프로그램의 비정상 종료 야기 - 예외
-프로그램의 코드에 의해서 수습될 수 있는 다소 미약한 오류
-프로그래머가 작성해놓은 코드를 통해 해결 가능
논리적 에러: 실행은 되지만, 의도와 다르게 동작
9.6 예외 클래스
- 계층구조
Java에서는 예외(Exception)도 객체이므로 클래스가 필요함 (오류(Error)도 객체)


*Exception 클래스들: 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
*RuntimeException 클래스들: 프로그래머의 실수로 발생하는 예외
-사용처
throws 옆에 써주는 것, catch 참조변수의 타입: Exception 클래스임

9.7.1 finally
예외의 발생여부에 상관없이 실행되어야할 코드를 포함시킬 목적
try-catch문의 끝에 선택적으로 덧붙여 사용 가능 (try->(catch->)finally)

*try블럭에서 return문이 실행되는 경우에도 finally블럭의 문장들이 먼저 실행된 후에, 현재 실행 중인 메서드를 종료함.
catch 블럭의 문장 수행 중에 return문을 만나도 finally블럭의 문장들은 수행됨.
9.7.2 자원 자동 반환

9.9. throw
-1. 내가 발생시키는 Exception
: 인위적으로 Exception 발생시키기 - 얼마든지 가능

-2. 내가 만들어서 내가 throw_몰라
throw new MyException();

*주 사용처: Exception chaining
'CSE > CP1 이론' 카테고리의 다른 글
| CP1_05.배열3_다차원 배열 (0) | 2024.06.17 |
|---|---|
| CP1_07.객체지향 프로그래밍_Advanced_내부 클래스 (0) | 2024.06.17 |
| CP1_07.객체지향 프로그래밍_Advanced_2.오버라이딩 (0) | 2024.06.11 |
| CP1_07. 객체지향프로그래밍_Advanced_1. 계승 (0) | 2024.06.11 |
| CP1_06. 객체지향프로그래밍_Advanced_6. 다형성 (0) | 2024.06.10 |