Today I Learned - 22
자바프로그래밍 - 8
- 예외 처리
- 자바 입출력
예외 처리 - 1. 예외 클래스
- 예외 처리의 목적
- 프로그램의 실행 오류(비정상적인 종료)를 막기 위해!
프로그래머가 직접 예외 처를 하지 않으면, 예외를 잡지 못하고 프로그램 멈춤
- 프로그램의 실행 오류(비정상적인 종료)를 막기 위해!
- 두 가지 실행 오류 - 시스템 오류와 예외
- 시스템 오류(Error): 제어 불가
- 예외(Exception): 프로그램에서 제어 가능!
두 클래 모두, Throwable클래스에서 상속 받음! (최상위!)
- 예외 클래스의 종류
- Exception: 최상위 클래스
- IOException: 입출력 예외 처리
- RuntimeException: 실행 오류 예외 처리
그 외 다수
예외 처리 - 2. 예외 처리하기
- try-catch문
try {
예외 발생할 수 있는 코드
} catch (예외타입 e) {
예외 처리하는 부분
}
- try-catch-finally문
try {
예외 발생할 수 있는 코드
} catch (예외타입 e) {
예외 처리하는 부분
} finally {
항상 수행되는 부분
}
- try-with-resource문
- close() 메서드 자동 호출(명시적 호출X)
=> try 블록 내에서 열린 리소스 자동으로 닫힘!
- 단, AutoCloseable 인터페이스 구현해야 함
- close() 메서드 자동 호출(명시적 호출X)
- AutoCloseable 인터페이스
- 반드시 close()메서드를 구현해야 한다!
- ‘throw new Exception()’문장 사용
- 프로그램에서 강제로 예외 발생-> catch블록 수행!
- 주의! ‘throw’:예외 발생 != ‘throws’:예외 미룸
예외 처리 - 3. 예외 처리 미루기
- throws 사용(예외 처리 미룸)
- 해당 메서드에서 예외 처리X, 메서드 호출 및 사용하는 부분에서 예외 처리
- 다중 예외 처리
- 여러 catch문 사용하는 경우, 각 catch 블록에서 각각의 예외 처리
- 주의! Exception클래스(default 예외처리)블록이 블록들 가장 아래에!!
- 여러 catch문 사용하는 경우, 각 catch 블록에서 각각의 예외 처리
예외 처리 - 4. 사용자 정의 예외
- 사용자 정의 예외 클래스 구현
- 기존 jdk에서 제공하는 예외 클래스 중 가장 유사한 것으로 상속 받도록
- 로그 잘 남기기!
- 오류 확인, 원인 파악 및 해결에 반드시 필요
본 교재에선 안배움..
- 오류 확인, 원인 파악 및 해결에 반드시 필요
자바 입출력 - 1. 자바 입출력과 스트림
- 스트림이란, (전에 배운 스트림과 다름!!)
- 가상 통로 [입출력 자료 <-> 자바 프로그램]
자바는 입출력 장치와 상관없이 일관성 있게 프로그램 구현해야 함!
- 가상 통로 [입출력 자료 <-> 자바 프로그램]
- 입력 스트림 / 출력 스트림
- 입력/출력은 동시에 할 수 없다.
- 입력/출력은 동시에 할 수 없다.
종류 | 예시 |
---|---|
입력 스트림 | …InputStream, …Reader |
출력 스트림 | …OutputStream, …Writer |
- 바이트 단위 스트림 / 문자 단위 스트림
- 바이트: 그림, 동영상, 음악 등
- 문자: 한글(바이트로 읽으면 깨짐)
종류 | 예시 |
---|---|
바이트 스트림 | …Stream |
문자 스트림 | …Reader, …Writer |
- 기반 스트림 / 보조 스트림
- 기반: 직접 자료를 읽고 씀
- 보조: 부가 기능 제공(직접 읽고 쓰기 불가)
종류 | 예시 |
---|---|
기반 스트림 | File… |
보조 스트림 | Input…, Output…, Buffered… |
자바 입출력 - 2. 표준 입출력
- System 클래스(static)
- System.out: 표준 출력용
- System.in: 표준 입력용
- System.err: 오류 출력
- Scanner 클래스
- 문자 외에도.. 정수, 실수 등 다른 자료형도 읽음!
- 콘솔 화면 외에도.. 파일, 문자열을 생성자의 매개변수로 받음
- 자주 쓰는 형식
Scanner scanner = new Scanner(System.in)
생성자 | 설명 |
---|---|
Scanner(File source) | 파일을 매개변수로 받아 Scanner 생성 |
Scanner(InputStream source) | 바이트스트림을 매개변수로 받아 Scanner 생성 |
Scanner(String source) | String을 매개변수로 받아 Scanner 생성 |
- Console 클래스
- 직접 콘솔 창에서 자료를 입력 받을 때 사용 (이클립스 연동X)
자바 입출력 - 3. 바이트 단위 스트림
- InputStream
- 바이트 단위로 읽는 스트림 중 최상위 스트림!
- 추상 메서드를 포함하는 추상 클래스!
- FileInputStream
- 해당 스트림 사용하려면, 스트림 클래스 먼저 생성
- OutputStream
- 해당 스트림 사용하려면, 스트림 클래스 먼저 생성
- FileOutputStream
- 해당 스트림 사용하려면, 스트림 클래스 먼저 생성
자바 입출력 - 4. 문자 단위 스트림
- Reader
- 문자 단위로 읽는 스트림 중 최상위
- Writer
- 문자 단위로 출력하는 스트림 중 최상위
자바 입출력 - 5. 보조 스트림
-
기반 스트림을 매개변수로 받아 보조 기능을 추가!
-
때로는 다른 보조 스트림을 매개변수로 받기도 함!
- a.k.a ‘Wrapper 스트림’
자신이 감싸고 있는 스트림이 읽고 쓸 때, 자신은 보조 기능 수행
- 디자인 패턴에서는, ‘데코레이터’ 라고..
- a.k.a ‘Wrapper 스트림’
자바 입출력 - 6. 직렬화
- 직렬화 & 역직렬화
- 직렬화: 인스턴스 내용을 연속 스트림(바이트 단위)으로 만드는 것
- 역직렬화: 저장된/전송받은 내용을 다시 복원하는 것
자바 입출력 - 7. 그 외 입출력 클래스
- File 클래스
- 파일이라는 개념을 추상화한 클래스
- 별도의 입출력 기능은X / 파일 경로 및 정보 조회, 파일 생성 가능
- 파일 생성은 ‘createNewFile() 메서드’ 통해서
- RandomAccessFile 클래스
- 입출력 클래스 중 유일하게, 파일 입출력을 동시에 할 수 있다
- 임의의 위치로 이동하여 자료를 읽을 수 있다.
공지
- 오늘 본교재 마무리 / 내일 다음 교재 지급
- (수), 스레드, 네트워크 -> 보충교재로 진행
- (목), jdbc와 오라클 DB 연동, MySQL 연동
- (금), 총정리 및 실기 시험(월요일) 안내
과제, ~5/31(화)까지 제출
- 5/16(월)까지는 마무리하도록
범위: 책 -> p.486~561(14, 15단원) 까지
- 복습/연습문제
- ‘1분 복습’, ‘연습 문제’의 문제&답, ‘타이핑’
- ‘나혼자 코딩’, ‘타이핑, 디버그’
제출파일: 이형록_220510_과제제출.txt 2. 실습코드
- 이클립스에 타이핑 (패키지, 클래스 동일하게)
제출파일: 이형록_220510_실습코드.txt (이클립스에서 작성한 내용을 복사) 3. 보충자료 확인
nice!