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 {
//메소드의 내용
}
출처