동현 유
척척석사
동현 유
전체 방문자
오늘
어제
  • 분류 전체보기 (181)
    • BlockChain (48)
      • [paper] Consensus (13)
      • [paper] Execution (19)
      • [paper] Storage (5)
      • [paper] ZKP (1)
      • [paper] Oracle (1)
      • Blockchains (9)
    • Java (19)
      • Java의 정석 (13)
      • Java 파헤치기 (5)
    • Python (20)
      • Python 뜯어보기 (6)
      • 데이터 분석 기초 (5)
      • Python 기초 강의 (6)
      • Python 기초 강의 부록 (3)
    • Golang (0)
    • MySQL (3)
      • programmers (2)
      • 기본 문법 (0)
    • 웹 프로젝트 (IBAS) (36)
      • Django 레거시 (14)
      • SpringBoot api 개편 (14)
      • Infra (3)
      • 서버 장애 기록 (4)
      • 신입팀원 교육 자료 (1)
    • CS (30)
      • Operating System (22)
      • Computer Security (3)
      • Network (4)
      • DBMS (1)
    • 책 (10)
      • 도메인 주도 설계 철저 입문 (9)
      • Real MySQL 8.0 (1)
    • BOJ 문제 풀이 (3)
    • 이러쿵저러쿵 (10)
    • 회고 (1)

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
동현 유

척척석사

[Java의 정석] 08. 예외 처리
Java/Java의 정석

[Java의 정석] 08. 예외 처리

2022. 3. 17. 10:54
모르는 것만 짧고 빠르게 정리한 노트입니다.
1.1 프로그램 오류

 

  • 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
  • 예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류

 

1.2 예외 클래스

  : Exception 은 checked Exception 과 unchecked Exception 으로 나뉜다.  unchecked Exception 은 보통 프로그래머의 실수에 의해 발생하고, checked Exception 은 어플리케이션 외적인 요인으로 발생한다.

  

 

1.3 메서드에 예외 선언하기

 

  • main 에서도 예외가 처리되지 않으면, 프로그램이 종료된다.

 

1.9 자동 자원 반환 try with resources 문
try (FileInputStream fis = new FileInputStream("score.dat");
     DataInputStream dis = new DataInputStream(fis)) {  // python with 랑 같은 용도인듯
     
    while(true) {
        score = dis.readInt();
        System.out.pringln(score);
        sum += score;
    }

} catch (EOFException e) {
    System.out.println("점수의 총합은 " + sum + "입니다.");
} catch (IOException ie) {
    ie.printStackTrace();
}​
  • 자동으로 close 를 호출한다. (finally 안에서 try catch 로 close 를 하는 것과 같은 형태)
  • AutoCloseable 인터페이스를 구현해야한다.
  • close 호출 시 에러가 나면, suppressed exception 을 출력한다. 에러는 한번에 하나만 호출할 수 있다. 따라서 close 는 finally 에서 가장 마지막에 에러가 나는 경우이므로, 가장 먼저 발생한 에러 안에 저장된다.

 

1.11 예외 되던지기

 

  • finally 블럭 내에서도 return 을 사용하면, try 블럭이나 catch 블럭의 return문 다음에 수행된다.

 

1.12 연결된 예외

 

  • 여러 예외를 하나의 큰 분류의 예외로 묶어서 다루기 위해 사용
  • checked 예외를 unchecked 예외로 바꿀 때 사용
try {
    startInstall();   // SpaceException 발생
    copyFiles();
} catch (SpaceException e) {    
    InstallException id = new InstallException("설치 중 예외 발생")
    ie.initCause(e);
    throw id;
}
static void startInstall() throws SpaceException, MemoryException {
    if (!enoughSpace())
        throw new SpaceException("설치할 공간이 부족합니다.");
    if (!enoughMemory())
        throw new MemoryException("메모리가 부족합니다.");
}

static void startInstall() throws SpaceException {
    if (!enoughSpace())
        throw new SpaceException("설치할 공간이 부족합니다.");
    if (!enoughMemory())
        throw new RuntimeException(new MemoryException("메모리가 부족합니다."));
}

'Java > Java의 정석' 카테고리의 다른 글

[Java의 정석] 11. Collections Framework  (0) 2022.03.23
[Java의 정석] 09. java.lang 패키지  (0) 2022.03.17
[Java의 정석] 7.2 메소드 오버라이딩 시 예외 선언  (0) 2022.03.14
[Java의 정석] 07. 클래스 상속 & 인터페이스 상속  (0) 2022.03.14
[Java의 정석] 06. 객체지향 프로그래밍  (0) 2022.03.08
    동현 유
    동현 유
    Fault Tolerant System Researcher for more Trustful World and Better Lives. (LinkedIn: https://www.linkedin.com/in/donghyeon-ryu-526b8a276/)

    티스토리툴바