ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ Java ] 예외 처리하기
    면접 준비 2020. 5. 29. 14:55

     

    Java에서 예외를 처리하는 방법은 2가지가 있습니다.

    1. try-catch 문 사용하기
    2. throws 예약어 사용하기

     

     try-catch

     

    finally

    예외가 발생하든 발생하지 않든 반드시 실행해야 하는 영역입니다. 예를 들면 DB 작업을 할 때 DB 작업이 성공했든 실패했든 사용한 DB 자원은 반드시 해제해 주어야 하고, 파일 입출력을 하고 난 후에는 Stream을 반드시 닫아주어야 합니다. 이런 작업을 try 영역에서 지정했다면 예외가 발생한 경우 실행되지 않을 수 있으므로 finally 영역에 지정해 주어야 합니다.

    예외 종류

    Java에서 모든 클래스의 최상위 클래스는 Object 클래스입니다. 그리고 Object 클래스를 예외 클래스 중 최상위 클래스인 Throwable 클래스가 상속받습니다. 

    Error 클래스에 속하는 에러들은 JVM이 갑자기 죽어버린 경우 등 개발자들이 예외처리 할 수 없는 것들입니다. 개발자들이 예외처리를 해주어야 하는 에러들은 Exception을 상속받는 에러들 입니다.

     

    RuntimeException ( Unchecked Exception )

    컴파일 단계에서는 문제가 발생하지 않고 실행 시에만 문제가 발생하는 예외들입니다.

    (Checked)Exception

    컴파일 단계에서 예외가 발생하는 경우입니다. 사용자의 작업에 의해서 발생하는 경우가 많습니다. 

    시스템에서 파일을 검색하는 프로그램을 만들었을 때 사용자가 없는 파일 이름을 입력하여 FileNotFoundExcetion이 발생, 입출력 예외가 발생하는 경우 IOException이 발생하는 등이 있습니다. 

     

     

     throws

    예외 처리를 자신이 호출한 메소드에서 하도록 예외 처리를 떠넘길 수 있습니다.

     

     

     Optional

    Java에서 Null이 들어있는 데이터를 다룰 때는 NullpotinException을 발생할 가능성이 있어 항상 중의해야 합니다. 이를 위해 아래와 같이 if문으로 체크하면서 코드를 작성함으로서 이를 막습니다.

    public static void main(String[] args) {
        String str = null;
        
        if (str == null) {
        	System.out.println(0);
        }
        else {
        	System.out.println(str.length());
        }
    }

    Null 처리를 간편하게 하기 위해서 Java8에 Optional 클래스가 추가 되었습니다. Optional은 데이터를 담고 있는 상자 같은 역할을 하게 되는데, Optional을 이용하면 위의 코드를 아래와 같이 진행할 수 있습니다.

    public static void main(String[] args) {
        String str = null;
        Optional<String> strOptional = Optinal.ofNullable(str);
        System.out.println(strOptional.orElse("").length());
    }

    하지만 Optional 클래스는 비싸므로 단순히 값이나 null을 얻을 목적으로 사용할 때는 null을 사용하는 것이 좋습니다. ( Optional을 사용하기 위한 26가지 주의 사항 )

     

    객체를 생성하는 메소드

    1. Optinal.empty() : 데이터가 없는 Optional 객체를 생성
    2. Optinal.ofNullable(Input) : 입력데이터에 null이 들어 올 수 있는 가능성이 있는 Optional 객체를 생성
    3. Optinal.of(Input) : 입력데이터에 null이 들어 올 수 없는 Optional 객체 생성

    객체의 데이터를 꺼내오는 메소드

    1. get() : 데이터를 가져오고, 데이터가 없는 경우 Null을 반환
    2. ofElse(기본값) : 데이터를 가져오고, 데이터가 없는 경우 인자로 들어간 기본값을 반환
    3. orElseGet(기본값을 반환해 줄 람다식) : 데이터를 가져오고, 데이터가 없는 경우 인자로 들어간 람다식의 로직으로 기본값을 만들어서 반환
    4. orElseThrow(예외를 반환해줄 람다식) : 데이터를 가져오고, 데이터가 없는 경우 인자로 들어간 예외를 발생

    '면접 준비' 카테고리의 다른 글

    [ Java ] 다형성 ( Polymorphism )  (0) 2020.05.25
    [ Java ] final 과 static  (0) 2020.05.25
    [ Java ] 제네릭 ( Generic )  (0) 2020.05.25
    [ Java ] Collection  (0) 2020.05.25

    댓글

Designed by Tistory.