박미미의 지식에서 쌓는 즐거움

[Java] 예외처리 Exception / try catch 본문

IT 공부/Java

[Java] 예외처리 Exception / try catch

낑깡좋아 2019. 9. 13. 16:23

예외처리 정의

컴파일에러: 오타나 잘못된 구문, 자료형 체크 등의 기본적인 문법 오류 체크

런타임에러: 프로그램 실행도중 발생할 수 있는 잠재적인 오류


예외처리는 런타임에러를 사전에 대비한 코드를 작성하는 것. 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것.


try-catch문

예외처리시 try-catch문을 사용해주어야 한다. 다음 예를 살펴보자.

  public static void main(String[] args)

  {

   throw new Exception();

  }

=> 이런 코드를 짠 후 컴파일 하면, 컴파일 에러가 발생한다. 예외처리가 된 코드가 없어 에러가 난 것이다. try-catch문으로 예외처리를 해주어야 컴파일이 된다.

  public static void main(String[] args)

  {

   try {

       throw new Exception();

   } catch (Exception e) {

      System.out.println("예외발생");

   }

  }


* try문 안에 있는 코드가 오류를 발생할 경우 try catch문의 실행순서

1) 발생한 예외와 일치하는 catch 블럭이 있는지 확인

2-1) 일치하는 catch블럭을 찾을 경우 → catch 내의 문장들을 수행 → 전체 try-catch문을 빠져나가 그 다음 문장을 계속해서 수행

2-2) 일치하는 catch블럭을 찾지 못할 경우 → 전체 try-catch문을 빠져나가 그 다음 문장을 계속해서 수행


* finally 블럭

 - try-catch문과 함께 예외의 발생여부에 상관없이 실행되어야할 코드를 포함시킬 목적으로 사용된다. 

  public static void main(String[] args)

  {

   try {

       throw new Exception();

   } catch (Exception e) {

      System.out.println("예외발생");

   } finally {

      // 항상 수행되어야하는 문장들을 넣는다

   }

  } 

 - 만약 try문안에 return문이 있더라도, finally블럭을 먼저 실행 한 후 메서드를 종료한다.


throw 키워드

throw문을 통해 고의로 예외를 발생시킬 수 있다.

 Exception e = new Exception("예외");

 throw e; //예외를 발생시킴 

위 내용을 한 줄로 줄여 쓸 수 있다.

 throw new Exception("예외"); 


메서드 선언부에 throws를 명시하는 경우

-> 예외를 처리하는 것이 아니라, 자신을 호출한 메서드에게 예외를 전달하여 예외처리를 떠맡기는 것. 최종 main메서드에서도 예외처리가 되지 않으면 프로그램이 종료된다.



출처: 자바의 정석(남궁성 저)

Comments