Java

[Java] 예외처리

quedevel 2021. 1. 17. 04:55
728x90
반응형

프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우를 에러 또는 오류라 한다.

 

우리는 에러가 발생하는 시점에 따라 3가지로 나눌 수 있다.

1. 컴파일 에러 : 컴파일 시에 발생하는 에러 ( 오타, 잘못된 구분, 자료형 )

2. 런타임 에러 : 실행 시에 발생하는 에러

3. 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것

 

Java에서는 실행 시 즉 런타임 시 발생하는 에러를 두가지로 나눌수 있는데

1. ERROR : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류

2. EXCEPTION : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류

 

예외를 처리하기 위한 두가지 방법

1. try - catch문을 사용하여 예외처리하기

2. 메서드에 예외 선언하기 EX )  void method() throws Exception { ... }

  하지만 이렇게 예외를 선언하면, 자손타입의 예외까지도 발생할 수 있다는 점을 주의해야한다.

 

자동 자원 반환 try - with - resources문

자바 라이브러리에는 close 메서드를 호출해 직접 닫아줘야 하는 자원이 많다.

EX ) InputStream, OutputStream, java.sql.Connection 등

자원 닫기는 클라이언트가 놓치기 쉬워서 예측할 수 없는 성능 문제로 이어지기도 한다. 

따라서, 꼭 회수해야 하는 자원을 다룰 때는 try-finally 말고, try-with-resources를 사용하자.

static String firstLineOfFile(String path, String defaultValue){
    try(BufferedReader br = new BufferedReader(new FileReader(path))){
        return br.readLine();
    }catch (IOException e){
        return defaultValue;
    }
}

* try-with-resources를 catch 절과 함께 쓰는 소스

 

예외 처리 정리

 

728x90
반응형

'Java' 카테고리의 다른 글

[Java] Comparator 와 Comparable  (0) 2021.01.23
[Java] 컬렉션 프레임워크  (0) 2021.01.23
[Java] OOP 5대 원칙  (0) 2021.01.10
[Java] 인터페이스(interface)  (0) 2020.12.30
[Java] 오버로딩 VS 오버라이드  (0) 2020.12.27