Java 예외

Resource 와 finally

수업소개

파일, 데이터베이스와 같은 자원들은 작업이 끝났을 때 연결을 끊어줘야 합니다. 이러한 작업들에 대해서 알아봅니다. 이렇게 반드시 해야 할 작업들을 처리해야 할 때 finally를 이용합니다. finally에 대해서도 살펴보겠습니다.

 

 

 

강의

 

 

 

소스코드

import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils;

import java.io.FileWriter;
import java.io.IOException;

public class CheckedExceptionApp {
    public static void main(String[] args) {
        FileWriter f = null;
        try {
            f = new FileWriter("data.txt");
            f.write("Hello");
        } catch(IOException e){
            e.printStackTrace();
        } finally {
            // 만약에 f가 null이 아니라면
            if(f  != null) {
                try {
                    f.close();
                } catch(IOException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

 

댓글

댓글 본문
  1. 코딩이취미다
    딱 이렇게 까지 해야 하나,
    깊은 빡 침 중에....딱 해결책을....
  2. 나연
    2022년 2월 26일 (토) 완료

    자바가 프로그램 외부에 있는 데이터에 접근하려고 할 때 생길 수 있는 문제들
    - 리소스(resource) : 자바 내부에 존재하는 데이터 X
    -- 대표적인 외부에 있는 데이터 : 이미지 또는 사운드 파일
    -- 네트워크에 접속해서 데이터 사용
    -- 데이터베이스 : 네트워크 사용
    - 리소스를 붙잡고 있는 행위를 하고 있다가 작업이 다 끝나면 붙잡고 있었던 것을 놔줘야 함
    -- 그때 공통적으로 사용하는 메소드 : `close()`

    ```java
    // Variable might not have been initialized 오류 때문에 null로 초기화
    FileWriter fileWriter = null;
    try {
    // fileWriter는 try의 중괄호 안에서 선언되었기 때문에 중괄호 안에서만 접근 가능 : "유효 범위"
    //
    fileWriter = new FileWriter("data.txt");
    fileWriter.write("Hello");
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    // try 안에서 익셉션이 발생했건 안 했건 무조건 finally 실행
    // close()를 하기 전에 예외가 발생할 수 있기 때문에 finally로 처리

    // IOException이 close()할 때도 발생 가능
    if (fileWriter != null) {
    try {
    fileWriter.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    ```
  3. 2021.09.01 완료
  4. boat
    감사합니다!!
  5. oyuiw
    20201214
graphittie 자세히 보기