1. Error와 Exception
우리가 개발하는데 있어서 Error와 Exception이란 단어를 많이 접해봤을 것이다.
Error와 Exception에 대한 정확한 정의와, Exception의 종류에 대해서 포스팅 하고자 한다.
Error 란 시스템에서 발생하는 심각한 수준의 오류를 의미하며 개발자가 예측할수 없어 개발시 예외처리에 신경쓰지 않아도된다.
Exception 이란 프로그램 로직에서 발생하는 오류로 개발시 작성된 코드에서 발생하여 사전에 예외를 예측할 수 있어 상황에 맞게 처리하는 것이다.
이런 예외클래스는 Throwable 클래스를 기반으로 Error와 Exception으로 나뉘고, 이때 Exception 클래스는 RuntimeException 클래스의 상속여부에 따라 CheckedException 과 UncheckedException 으로 나뉘게 된다.
2. Checked Exception 과 Unckecked Exception
그렇다면 CheckedException 과 UnckeckedException 의 차이점에대해서 알아보자
Checked Exception | Unchecked Exception | |
확인 시점 | 컴파일 시점 | 런타임 시점 |
처리 여부 | 반드시 예외처리를 해주어야 한다. | 명시적으로 하지 않아도 된다. |
트랜잭션 처리 | 예외 발생시 Rollback 하지 않음 | 예외 발생시 Rollback 해야됨 |
종류 | IOException, SQLException ... | NullpointerException, IndexOutOfBoundException ... |
3. 예외 처리 방법
실제로 예외를 발생시키면서 3가지 예외처리 방법을 소개하고자 한다.
1. 예외 복구
예외 복구란 try-catch-finally 문을 사용하여 예외상황을 파악하고 정상상태로 되돌려놓는 방법을 말한다.
Checked Exception 의 종류중 하나인 IOException 을 예를들면
write 메소드 밑에 빨간줄이 들어간것을 볼 수 있다. 그 이유는 Checked Exception은 컴파일 시점에서 예외를 확인하므로 반드시 예외처리를 해줘야하기 때문에 예외처리를 해야한다.
Unchecked Exception 의 종류중 하나인 NullPointerExcepion으로 예를들면
Checked Exception 과는 다르게 컴파일이 문제가 없기때문에 런하기 전까지 에러를 잡지 못하는 모습이다.
2. 예외처리 회피
예외처리 회피란 예외처리를 직접 담당하지 않고 호출한 쪽으로 던져서 회피하는 방법으로 긴밀하게 역할을 분담하고 있는 관계가 아니라면 그냥 예외를 던지는것은 무책임하고, 무분별하게 사용하는 경우 코드의 퀄리티가 떨어지는 방법이다.
3. 예외 전환
예외 전환은 예외를 적절한 예외로 전환해서 자신을 호출할 쪽으로 던져버리는 방법으로
Checked Exception 이 발생했을 때 RuntimeException을 발생시켜 자신을 호출할 쪽으로 던저버리는 방식으로 사용한다.
'JAVA' 카테고리의 다른 글
String , StringBuilder, StringBuffer 속도차이 비교 (0) | 2022.02.09 |
---|---|
Equals 와 HashCode (0) | 2022.02.09 |
방어적 복사 vs Unmodifiable Collection (0) | 2022.02.08 |
불변객체(Immutable Object)를 사용해야하는 이유 (0) | 2022.02.08 |
상속보다는 컴포지션을 사용하자 (4) | 2022.02.05 |
Java 에는 Call by reference 가 없다. (0) | 2022.01.24 |