본 강좌에서는 자바의 예외 처리에 대해 살펴보겠습니다!
1. 학습 목표
예외 처리에 대해 살펴보고 활용법을 본다.
2. 학습 내용
•
예외의 개념
•
Exception Class
•
try ~ catch ~ finally
•
throw, throws
•
사용자 정의 예외
3. 예외의 개념
•
예외
◦
프로그래밍 상에서 예측이 가능한 오류 사항을 의미한다.
◦
특정 코드에 대해 오류가 날수도 있는 사항들을 기제하여 오류가 발생했을 경우 프로그램이 강제 종료되는 것을 막고 오류에 대한 처리를 개발자가 스스로 하여 프로그램이 비 정상적으로 종료되는 것을 막아주는 기법이다.
◦
자바에서는 오류가 발생할 수도 있는 코드를 사용할 경우 사용하는 쪽에서 예외 처리를 강제적으로 하도록 유도할 수 있다.
4. Exception Class
•
Exception
◦
예외가 발생하는 이를 처리해야 하는데 처리를 할 수 있는 기능을 가지고 있는 클래스가 바로 Exception 클래스이다.
◦
Exception 클래스의 경우 예외가 발생되면 사용자에게 메시지를 전달할 수 있는 기능들이 포함되어 있다.
◦
기본적인 기능 외에 더 처리할게 있다면 그에 맞는 Exception을 상속 받은 클래스를 이용하면 된다.
◦
IOException, InteruptedException,…
•
RuntimeException
◦
기본 사항은 Exception 과 동일 하지만 Exception을 상속받은 예외 클래스는 프로그래밍을 할때 직접적인 예외처리를 해야만 컴파일에 통과를 하지만 RuntimeException 을 상속받은 예외 클래스는 프로그래밍을 할때 직접적인 예외처리를 하지 않아도 컴파일 되게 허가를 해준다. 하지만 예외가 발생하면 똑같이 강제 종료가 되며 예외가 발생할 수도 있다면 예외 처리를 해줘야 한다. 하지만 이러한 예외의 경우 if 문과 같은 조건문 등을 이용하면 예외 처리없이 오류를 방지할 수 있는 것만들 정의 되어 있다.
5. try ~ catch ~ finally
•
예외 처리 블럭
◦
예외 처리는 다음과 같은 문법을 통해 처리 할 수 있다.
try{
예외가 발생할 수 있는 코드
} catch (ArithmeticException e1){
arithmeticException 이 발생할 경우 처리할 코드
} catch (IOException e2){
IOException 이 발생할 경우 처리할 코드
} finally {
예외 발생여부에 관계없이 처리할 코드
}
Java
복사
6. 예외의 발생
•
throws
◦
메서드에 throws를 사용하면 예외가 발생할 경우 직접 처리하지 않고 메서드를 호출한 곳에서 처리를 하도록 유도할 수 있다.
◦
메서드에서 throws를 통해 예외를 전달하면 메서드를 호출하는 쪽은 예외 처리 블록을 이용해 반드시 예외를 처리해줘야 한다.
•
throw
◦
메서드 내부에서 예외를 발생시키는 경우에 사용한다.
◦
if 문과 같은 조건문을 통해 조건을 검사하고 잘못된 경우라 판단이 되면 예외를 발생시켜 메서드를 호출한쪽에서 예외를 처리할 수 있도록 유도할 수 있다.
7. 사용자 정의 예외처리
•
자바에는 무수히 많은 예외처리 클래스를 제공하고 있다.
•
이러한 클래스들 외에 개발자가 만들어서 쓸 경우도 있는데 Exception 클래스를 상속받은 클래스를 만들어 주면된다.
•
만약 어떠한 메시지를 사용자에게 전달하고 싶다면 getMessage 메서드를 overriding 하면된다. 이 메서드는 예외가 발생될 때 자동으로 호출된다.
8. 학습 정리
정리
•
예측이 가능한 오류가 발생했을 경우 이를 처리할 수 있도록 사전에 코드를 작성하는 것을 가르켜 예외 처리라고 부른다.
•
Exception 클래스는 모든 예외 처리 클래스의 부모 클래스이다.
•
예외가 발생할 수도 있는 곳은 try ~ catch ~ finally 블록을 이용해 처리한다.
•
throws 는 예외가 발생할 경우 메서드를 호출한 곳으로 전달한다.
•
throw 는 예외를 발생시킬 때 사용한다.
•
제공되는 예외 처리 클래스의 외에 사용자가 만들어서 쓸 경우에는 Exception 을 상속 받을 클래스를 만들어준다.