반응형
< 예외 처리 방법 >
자바는 예외 처리 시 try-catch-finally 문을 사용합니다.
try {
예외가 발생할 가능성이 있는 실행문
}catch ( 처리할 예외 타입 선언 ){
예외 처리문}finally {
예외 발생 여부와 상관없이 무조건 실행되는 문장(생략가능)}
try 블록에서 예외가 발생하면 다음 문장을 실행하지 않고곧바로 catch 블록의 예외 처리문을 실행한 후 finally 블록을 실행합니다.
try 블록의 문장을 모두 성공적으로 수행하면 catch 블록을 실행하지 않고finally 블록을 실행합니다. 한편 finally 블록은 생략 가능합니다.
< 예외 처리 종류 >
ClassNotFoundException | 클래스를 찾지 못함 |
CloneNotSupportedException | Cloneable 인터페이스 미구현 |
IllegalAccessException | 클래스 접근을 못함 |
InstantiationException | 추상 클래스 또는 인터페이스를 인스턴스화 하고자 할때 |
InterruptedException | 쓰레드가 중단 되었을때 |
NoSuchFieldException | 지정된 필드가 없을때 |
NoSuchMethodException | 지정된 메소드가 없을때 |
[IOException] CharConversionException | 문자 변환에서 예외가 발생했을때 |
[IOException] EOFException | 파일의 끝에 도달했을때 |
[IOException] FileNotFoundException | 파일이 발견되지 않았을때 |
[IOException] InterruptedIOException | 입출력 처리가 중단 되었을때 |
[IOException][ObjectStreamException] InvalidClassException | 시리얼라이즈 처리에 관한 문제가 클래스 안에 있을때 |
[IOException][ObjectStreamException] InvalidObjectException | 시리얼라이즈된 오브젝트에서 입력 검증에 실패했을때 |
[IOException][ObjectStreamException] NotActiveException | 스트림 환경이 액티브하지 않을 때 메소드를 호출했을때 |
[IOException][ObjectStreamException] NotSerializableException | 오브젝트를 시리얼라이즈 할 수 없을때 |
[IOException][ObjectStreamException] OptionalDataException | 오브젝트를 읽을때 기대 이외의 데이터와 만났을때 |
[IOException][ObjectStreamException] StreamCorruptedException | 읽은 데이터 스트림이 파손되어 있을때 |
[IOException][ObjectStreamException] WriteAbortedException | 기록중에 예외가 발생한 스트림을 읽었을때 |
[IOException] SyncFailedException | 시스템 버퍼를 동기시키는 FileDescriptor.sync()의 호출 실패시 |
[IOException] UnsupportedEncodingException | 지정된 문자 부호화 형식을 지원하고 있지 않을때 |
[IOException] UTFDataFormatException | 부정한 UTF-8방식 문자열과 만났을때 |
[RuntimeException] ArithmeticException | 어떤 값을 0으로 나눌 때 발생 |
[RuntimeException] ArrayStoreException | 배열에 부정한 형태의 오브젝트를 저장하고자 할때 |
[RuntimeException] [IllegalArgumentException] IllegalThreadStateException | 쓰레드가 요구된 처리를 하기에 적합한 상태에 있지 않을때 |
[RuntimeException] [IllegalArgumentException] NumberFormatException | 부적절한 문자열을 수치로 변환하고자 할때 |
[RuntimeException] IllegalMonitorStateException | 모니터 상태가 부정일때 |
[RuntimeException] IllegalStateException | 메소드가 요구된 처리를 하기에 적합한 상태에 있지 않을때 |
[RuntimeException] [IndexOutOfBoundException] ArrayIndexOutOfBoundsException | 범위 밖의 배열 첨자 지정시 |
[RuntimeException] [IndexOutOfBoundException] StringIndexOutOfBoundsException | 범위 밖의 String 첨자 지정시 |
[RuntimeException] NegativeArraySizeException | 음의 크기로 배열 크기를 지정하였을때 |
[RuntimeException] NullPointerException | null 오브젝트로 접근했을때 |
[RuntimeException] SecurityException | 보안 위반시 |
[RuntimeException] UnsupportedOperationException | 지원되지 않는 메소드를 호출했을때 |
@ Error | |
[LinkageError] ClassCircularityError | 클래스 초기화중에 순환 참조를 검출시 |
[LinkageError] [ClassFormatError] UnsupportedClassVersionError | JVM이 지원되지 않는 버전의 번호를 가진 클래스 파일을 읽고자 할때 |
[LinkageError] ExceptionInInitializerError | 정적 이니셜라이저로 예외가 발생시 |
[LinkageError] [IncompatibleClassChangeError] AbstracMethodError | 추상 메소드를 호출했을때 |
[LinkageError] [IncompatibleClassChangeError] IllegalAccessError | 접근할 수 없는 메소드와 필드를 사용하고자 했을때 |
[LinkageError] [IncompatibleClassChangeError] InstantiationError | 인터페이스 또는 추상 클래스를 인스턴스화하고자 했을때 |
[LinkageError] [IncompatibleClassChangeError] NoSuchFieldError | 지정한 필드가 존재하지 않을때 |
[LinkageError] [IncompatibleClassChangeError] NoSuchMethodError | 지정한 메소드가 존재하지 않을때 |
[LinkageError] NoClassDefFoundError | 클래스 정의가 발견되지 않았을때 |
[LinkageError] UnsatisfieldLinkError | 클래스에 포함되는 링크 정보를 해결할 수 없을때 |
[LinkageError] VerifyError | 클래스 파일안에 부적절한 부분이 있을때 |
ThreadDeath | 쓰레드가 정지해야만 한다는 의미 |
[VirtualMachineError] InternalError | 내부에러 |
[VirtualMachineError] OutOfMemoryError | 메모리부족으로 메모리를 확보 못함 |
[VirtualMachineError] StackOverflowError | 스택 오버 발생 |
[VirtualMachineError] UnknownError | 심각한 예외발생 |
출처: http://silverbullet.tistory.com/entry/Exception의-종류와-발생원인 [계속 계속 공부하자]
반응형
'프로그래밍 > 시스템' 카테고리의 다른 글
[java] 입출력스트림 - 파일쓰기 (0) | 2017.06.07 |
---|---|
[C] #define for문 (0) | 2017.06.06 |
[java - OracleDB 연동] 주문하고 치킨먹자 (0) | 2017.06.05 |
[윈도우 프로그래밍] 뮤텍스 크리티컬섹션 (0) | 2017.06.02 |
[java-OracleDB] DB 우편번호 검색 로직 (0) | 2017.05.25 |