3 minute read

자바프로그래밍 - 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 인터페이스 구현해야 함
  • AutoCloseable 인터페이스
    • 반드시 close()메서드를 구현해야 한다!
    • ‘throw new Exception()’문장 사용
      • 프로그램에서 강제로 예외 발생-> catch블록 수행!
      • 주의! ‘throw’:예외 발생 != ‘throws’:예외 미룸



예외 처리 - 3. 예외 처리 미루기

  • throws 사용(예외 처리 미룸)
    • 해당 메서드에서 예외 처리X, 메서드 호출 및 사용하는 부분에서 예외 처리
  • 다중 예외 처리
    • 여러 catch문 사용하는 경우, 각 catch 블록에서 각각의 예외 처리
      • 주의! Exception클래스(default 예외처리)블록이 블록들 가장 아래에!!



예외 처리 - 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 스트림’

      자신이 감싸고 있는 스트림이 읽고 쓸 때, 자신은 보조 기능 수행

    • 디자인 패턴에서는, ‘데코레이터’ 라고..



자바 입출력 - 6. 직렬화

  • 직렬화 & 역직렬화
    • 직렬화: 인스턴스 내용을 연속 스트림(바이트 단위)으로 만드는 것
    • 역직렬화: 저장된/전송받은 내용을 다시 복원하는 것



자바 입출력 - 7. 그 외 입출력 클래스

  • File 클래스
    • 파일이라는 개념을 추상화한 클래스
    • 별도의 입출력 기능은X / 파일 경로 및 정보 조회, 파일 생성 가능
      • 파일 생성은 ‘createNewFile() 메서드’ 통해서
  • RandomAccessFile 클래스
    • 입출력 클래스 중 유일하게, 파일 입출력을 동시에 할 수 있다
    • 임의의 위치로 이동하여 자료를 읽을 수 있다.






공지

  • 오늘 본교재 마무리 / 내일 다음 교재 지급
  • (수), 스레드, 네트워크 -> 보충교재로 진행
  • (목), jdbc와 오라클 DB 연동, MySQL 연동
  • (금), 총정리 및 실기 시험(월요일) 안내



과제, ~5/31(화)까지 제출

  • 5/16(월)까지는 마무리하도록

    범위: 책 -> p.486~561(14, 15단원) 까지

    1. 복습/연습문제
    • ‘1분 복습’, ‘연습 문제’의 문제&답, ‘타이핑’
    • ‘나혼자 코딩’, ‘타이핑, 디버그’

      제출파일: 이형록_220510_과제제출.txt 2. 실습코드

    • 이클립스에 타이핑 (패키지, 클래스 동일하게)

      제출파일: 이형록_220510_실습코드.txt (이클립스에서 작성한 내용을 복사) 3. 보충자료 확인






nice!

Updated: