일반적으로 코드를 생성할 때 우리는 예외처리를 고민합니다.
대부분은 시간에 쫒겨 예외처리를 무시하지만 현재 개발은 안정적이라고 할 수 있는
기본 프레임워크에서 정의된 개발 표준을 따르도록 되어 있어
예외 처리를 신경 쓰지 않아도 됩니다.
하지만 그래도 개발자 마다 개발 성향이 간혹 예외처리를 해줘야 하는 경우가 생깁니다.
보통은 이럴 때 발생할 예외 사항에 따라 Exception을 선언하도록 합니다.
하지만 보통 어떻게 하나요?
저만 그런지 몰라도
try {
......
} catch(Exception e) {
.....
} finally {
.......
}
이렇게 할 거 같은데요
하지만 권장하는 예외 처리는 상황에 맞는 Exception 사용하기입니다.
아래에 명시된 Exception을 적절히 써 주는 것입니다.
ClassNotFoundException | 클래스를 찾지 못함 | ||
CloneNotSupportedException |
인터페이스 미구현 | ||
IllegalAccessException | 클래스 접근을 못함 | ||
InstantiationException | 추상 클래스 또는 인터페이스를 인스턴스화 하고자 할때 | ||
InterruptedException | 쓰레드가 중단 되었을때 | ||
NoSuchFieldException | 지정된 필드가 없을때 | ||
NoSuchMethodException | 지정된 메소드가 없을때 | ||
IOException | CharConversionException | 문자 변환에서 예외가 발생했을때 | |
EOFException | 파일의 끝에 도달했을때 | ||
FileNotFoundException | 파일이 발견되지 않았을때 | ||
InterruptedIOException | 입출력 처리가 중단 되었을때 | ||
ObjectStreamException | InvalidClassException | 시리얼라이즈 처리에 관한 문제가 클래스 안에 있을때 | |
InvalidObjectException | 시리얼라이즈된 오브젝트에서 입력 검증에 실패했을때 | ||
NotActiveException | 스트림 환경이 액티브하지 않을 때 메소드를 호출했을때 | ||
NotSerializableException | 오브젝트를 시리얼라이즈 할 수 없을때 | ||
OptionalDataException | 오브젝트를 읽을때 기대 이외의 데이터와 만났을때 | ||
StreamCorruptedException | 읽은 데이터 스트림이 파손되어 있을때 | ||
WriteAbortedException | 기록중에 예외가 발생한 스트림을 읽었을때 | ||
SyncFailedException | 시스템 버퍼를 동기시키는 FileDescriptor.sync()의 호출 실패시 | ||
UnsupportedEncodingException | 지정된 문자 부호화 형식을 지원하고 있지 않을때 | ||
UTFDataFormatException | 부정한 UTF-8방식 문자열과 만났을때 | ||
RuntimeException | ArithmeticException | 제로제산 등의 산술 예외 발생시 | |
ArrayStoreException | 배열에 부정한 형태의 오브젝트를 저장하고자 할때 | ||
IllegalArgumentException | IllegalThreadStateException | 쓰레드가 요구된 처리를 하기에 적합한 상태에 있지 않을때 | |
NumberFormatException | 부적절한 문자열을 수치로 변환하고자 할때 | ||
IllegalMonitorStateException | 모니터 상태가 부정일때 | ||
IllegalMonitorStateException | 모니터 상태가 부정일때 | ||
IllegalStateException | 메소드가 요구된 처리를 하기에 적합한 상태에 있지 않을때 | ||
IndexOutOfBoundException | ArrayIndexOutOfBoundsException | 범위 밖의 배열 첨자 지정시 | |
StringIndexOutOfBoundsException | 범위 밖의 String 첨자 지정시 | ||
NegativeArraySizeException | 음의 크기로 배열 크기를 지정하였을때 | ||
NullPointerException | null 오브젝트로 접근했을때 | ||
SecurityException | 보안 위반시 | ||
UnsupportedOperationException | 지원되지 않는 메소드를 호출했을때 | ||
위에 있는 것을 보시고 빠진 것들이 있다고 생각되실 것입니다. 위에 정의된 것은 주로 사용되는 것입니다.
그리고 요즘은 사용되는 프레임워크에 따라 추가되는 예외도 있습니다.
하지만 아래 예외 처리를 적절하게 사용하고 있는지는 장담할 수 없습니다.
그래서 대부분은 Exception을 사용합니다. Exception 은 모든 예외를 다 체크하니까요
아니면 다음과 같이 처리합니다.
try {
....
} catch(NullPointException ne) {
.....
} catch(Exception e) {
.....
}
이렇게 하면 Null 인 경우의 예외처리와 Null이 아닌 경우의 예외 상황에 따라 다르게 처리가 됩니다.
이런 예외처리를 UserException을 이용해 사용자 정의 처리를 구현할 생각입니다.
소스코드에 대한 설명은 다음에 이어서 하도록 하겠습니다.