Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

DOing

[JAVA] 예외처리 본문

Java & Kotlin

[JAVA] 예외처리

mangdo 2021. 6. 24. 21:57

예외처리의 목적

1. 예외의 발생으로 인한 실행 중인 프로그램의 비정상 종료를 막기 위해서

2. 개발자에게 알려서 코드를 보완할 수 있도록 하게 위해서

 

🧐 자바의 예외 클래스

예외 클래스 중 일부

 

- Error

: 프로그램이 종료되어야하는 심각한 상황이다.

: 대부분 컴퓨터나 JVM이 시스템적으로 동작할 수 없는 상황을 표현한다.

 

- Exception

: 프로그램이 종료되지는 않지만 처리되어야하는 예외나 문제상황을 표현하기 위해 사용한다.

 

 


 

🧐 Try - Catch - Finally구문

try에는 예외가 발생할 가능성이 있는 코드를 넣는다.

catch에는 에러 발생시 처리해야할 코드를 넣는다.

finally에는 예외의 발생여부에 관계없이 항상 수행되어야하는 코드를 넣는다.(선택 사항)

import java.io.FileOutputStream;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        FileOutputStream out = new FileOutputStream("test.txt");
        try {
            // test.txt file 에 Hello world 를 출력
            out.write("Hello world".getBytes());
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
                System.out.println("항상 실행되는 finally 구문");
        }
        out.close();
    }
}

 

 

🧐 Try - with - resource 구문

  입출력과 함께 자주 쓰이는 구문이다.

  try()안에 AutoClosable 인터페이스를 구현한 객체를 선언하면 사용할 수 있다. 일반적으로 사용되었던 자원을 끝난 후에 닫아줘야 하는 것들이 존재하는데 기존의 try-catch를 사용하게 되면 자원을 닫을 때 close()를 명시해줘야 했다. 하지만 try-with-recource 구문을 사용하게 되면 try문을 벗어나는 순간 자동적으로 close()가 호출된다.

import java.io.FileOutputStream;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {

        try (FileOutputStream out = new FileOutputStream("test.txt")) {
            // test.txt file 에 Hello world 를 출력
            out.write("Hello world".getBytes());
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

 

 

🧐 메소드의 예외처리

 catch문을 이용해서 예외처리를 하지 않은 경우, 메소드에 throws로 예외가 발생할 수 있다는 것을 알려주어야 한다. throws 키워드가 있는 함수를 호출한다면, 호출한 쪽에서 catch와 관련된 코드를 작성해주어야 한다.

void method() throws IndexOutOfBoundsException, IllegalArgumentException {
    //메소드의 내용
}

 

 

 

 

 

출처

자바 에러클래스 이미지