본문 바로가기

TIL

2022.11.15 TIL JAVA 예외, 에러 처리

  • 예외처리의 목적
    1. 예외의 발생으로 인한 실행 중인 프로그램의 비정상 종료를 막기 위해
    2. 개발자에게 알려서 코드를 보완할 수 있도록 하게 위해

 

  • 자바에서는 상속을 이용해서 모든 예외를 표현합니다. 모든 예외 클래스는 Throwable의 자손 클래스 입니다.
  • Throwable 에는 크게 두 종류의 자식 클래스가 있습니다.
    • Error 는 프로그램이 종료되어야 하는 심각한 문제를 표현합니다. 대부분 컴퓨터나 JVM이 시스템적으로 동작할 수 없는 상황을 표현합니다.
    • Exception 은 프로그램이 종료되지는 않지만 예외나 문제상황을 표현하기 위해 사용합니다.
  • 예외 상황은 대부분 Exception 종류
  • 실행도중 발생하는 Exception은 RuntimeException을 상속받아서 정의
  • 파일을 읽고 쓰거나, 원격에 있는 저장소로부터 데이터를 읽고 쓸 때 나는 에러를 표현하려면 IOException을 상속받아서 정의

try-catch(-finally) 형식 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Main {
    public static void main(String[] args) {
        int number = 10;
        int result;
 
        for (int i = 10; i >= 0; i--) {
            try {
                result = number / i;
                System.out.println(result);
            } catch (Exception e) {
                System.out.println("Exception발생: " + e.getMessage());
            } finally {
                System.out.println("항상 실행되는 finally 구문");
            }
        }
    }
 
}
cs

 

try-with-resource 형식

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

기존의 try-catch(-finally)문은 자원을 닫을 때 close()를 사용

try-with-resource문은 try문을 벗어나는 순간 자동적으로 close()가 호출

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 Sparta 를 출력
            out.write("Hello Sparta".getBytes());
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
cs

 

 

개발을 하다보면 꼭 마주치는 예외, 에러 상황에서 프로그램을 동작하게 만들어주는 기능

필요한 부분에 사용하되 남용하지 않는 것이 좋겠다.

'TIL' 카테고리의 다른 글

2022.11.17 JAVA 객체지향  (0) 2022.11.17
2022.11.16 TIL JAVA 날짜와 시간  (0) 2022.11.16
2022.11.14 TIL 알고리즘 4장  (0) 2022.11.14
[WIL] 2022.11.07~11.11  (0) 2022.11.13
2022.11.11 TIL 알고리즘 정렬 / CPU  (0) 2022.11.11