ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 예외처리
    java 2020. 5. 6. 19:36

    예외

    -프로그래밍 상에서 예측이 가능한 오류 사항을 의미한다.

    -특정 코드에 대해 오류가 날수도 있는 사항들을 기재하여 오류가 발생했을 경우 프로그램이 강제 종료되는 것을 막고 오류에 대한 처리를 개발자가 스스로 하여 프로그램이 비정상적으로 종료되는 것을 막아주는 기법이다.

    -자바에서는 오류가 발생할 수도 있는 코드를 사용할 경우 사용하는 쪽에서 예외처리를 강제적으로 하도록 유도할 수 있다.

     

    Exception

    -예외가 발생하면 이를 처리해야 하는데 처리를 할 수 있는 기능을 가지고 있는 클래스가 바로 Exception 클래스이다.

    -Exception 클래스의 경우 예외가 발생되면 사용자에게 메시지를 전달할 수 있는 기능들이 포함되어 있다.

    -기본적인 기능 외에 더 처리할 게 있다면 그에 맞는 Exception을 상속 받은 클래스를 이용하면 된다.

    -IOException, InteruptedException.....

     

    RuntimeException

    -기본사항은 Exception과 동일. 하지만 Exception을 상속받은 예외클래스는 프로그래밍을 할 때 직접적인 예외처리를 해야만 컴파일에 통과를 하지만 RuntimeException을 상속받은 예외 클래스는 프로그래밍을 할 때 직접적인 예외처리를 하지 않아도 컴파일이 되게 허가를 해준다. 하지만 예외가 발생하면 똑같이 강제종료가 되며 예외가 발생할 수도 있다면 예외처리를 해줘야 한다. 하지만 이러한 예외의 경우 if문과 같은 조건문 등을 이용하면 예외처리 없이 오류를 방지할 수 있는 것들만 정의되어 있다.

     

    try{

        예외가 발생할 수 있는 코드

    }catch(ArithmeticException e1){

        arithmeticException이 발생할 경우 처리할 코드

    }catch(IOException e2){

        IOException이 발생할 경우 처리할 코드

    }finally{

        예외 발생여부에 관계없이 처리할 코드

    }

     

    throws

    -메서드에 throws를 사용하면 예외가 발생할 경우 직접 처리하지 않고 메서드를 호출한 곳에서 처리를 하도록 유도할 수 있다.

    -메서드에서 throws를 통해 예외를 전달하면 메서드를 호출하는 쪽은 예외처리 블록을 이용해 반드시 예외를 처리해줘야 한다.

     

    throw

    -메서드 내부에서 예외를 발생시키는 경우에 사용한다.

    -if문과 같은 조건문을 통해 조건을 검사하고 잘못된 경우라 판단이 되면 예외를 발생시켜 메서드를 호출한 쪽에서 예외를 처리할 수 있도록 유도할 수 있다.

     

    사용자 정의 예외처리

    -자바에는 무수히 많은 예외처리 클래스를 제공하고 있다.

    -이러한 클래스들 외에 개발자가 만들어서 쓸 경우도 있는데 Exception 클래스를 상소갇은 클래스를 만들어 주면 된다.

    -만약 어떠한 메시지를 사용자에게 전달하고 싶다면 getMessage 메서드를 overriding 하면 된다. 이 메서드는 예외가 발생될 때 자동으로 호출된다.

     

    정리

    -예측이 가능한 오류가 발생했을 경우 이를 처리할 수 있도록 사전에 코드를 작성하는 것을 가르켜 예외처리라고 부른다.

    -Exception 클래스는 모든 예외처리 클래스의 부모 클래스이다.

    -예외가 발생할 수도 있는 곳은 try ~ catch ~ finally 블록을 이용해 처리한다.

    -throws는 예외가 발생할 경우 메서드를 호출한 곳으로 전달한다.

    -throw는 예외를 발생시킬 때 사용한다.

    -제공되는 예외처리 클래스 외에 사용자가 만들어서 쓸 경우에는 Exception을 상속 받을 클래스를 만들어 준다.

     

    참조 : 인프런 - 안드로이드를 위한 Java - 자바예외처리

    'java' 카테고리의 다른 글

    String  (0) 2020.05.07
    Runtime클래스  (0) 2020.05.06
    thread 동기화  (0) 2020.05.06
    thread 우선순위  (0) 2020.05.06
    thread  (0) 2020.05.06

    댓글

Designed by Tistory.