예외처리
블랙홀 예외처리
=> catch블록을 이용해 화면에 메시지를 출력한 것은 예외를 처리한 것이 아니다.
예외를 처리할 때 반드시 지켜야 할 핵심 원칙은 한가지다.
모든 예외는 적절하게 복구되든지 아니면 작업을 중단시키고 운영자 또는 개발자에게 분명하게 통보돼야 한다.
1 2 3 4 5 6 | try{ // .. 로직 }catch(SQLException e){ e.printStackTrace(); System.exit(1); } | cs |
(그나마 나은 예외처리.. 시스템 종료)
무의미하고 무책임한 throws
=> 기계적으로 throws를 던진다면, 결과적으로 적절한 처리를 통해 복구될 수 있는 예외상황도 제대로 다룰 수 있는 기회를 박탈 당한다.
예외의 종류와 특징
예외처리에서 가장큰 이슈는 checked Exception(명시적 처리가 필요한 예외)를 사용하고 다루는 방법이다.
자바에서 throw를 통해 발생시킬 수 있는 예외는 크게 3가지가 존재한다.
1. Error
java.lang.Error
주로 자바 VM에서 발생시키는 것이고 애플리케이션 코드에서 잡으려고 하면 안된다.
2. Exception과 체크 예외
java.lang.Exception 클래스와 그 서브클래스로 정의된 예외들은 에러와 달리 코드의 작업 중에 예외상황이 발생했을 경우에 사용된다.
RuntimeException은 RuntimeException 클래스를 상속받은 것을 말하며,
Exception의 서브 클래스이면서 RuntimeException 클래스를 상속받지 않은 것을 모두 통틀어 Exception(Checked Exception)이라 한다.
checked Exception은 catch문으로 잡던지, throws를 이용해서 밖으로 던지지 않으면 컴파일 에러가 발생한다.
3. RuntimeException과 언체크/런타임 예외
java.lang.RuntimeException
예외처리를 강제하지 않기 때문에 언체크 예외(Unchecked Exception)라고 불린다.
피할 수 있지만 개발자가 부주의해서 발생할 수 있는 경우에 발생하도록 만든 것이 런타임에 예외이다.
(출처 : 토비의 스프링)
'프로그래밍 노트 > JAVA' 카테고리의 다른 글
[JAVA] 정적멤버와 static (0) | 2018.11.26 |
---|---|
[JAVA] 예외처리 - 예외처리 방법 (2) | 2018.09.19 |
[JAVA] 컬렉션프레임워크(CollectionFramework) 6 - TreeMap (0) | 2018.09.13 |
[JAVA] 컬렉션프레임워크(CollectionFramework) 5 - HashMap (0) | 2018.09.13 |
[JAVA] 컬렉션프레임워크(CollectionFramework) 4 - TreeSet (0) | 2018.09.12 |