1. 패러다임
- 객체 지향 프로그래밍(Object-Oriented Programming)
- 구조적 프로그래밍(Structured Programming)
- 절차적 프로그래밍(Imperative Programming)
2. JRE : Java Runtime Environment
- 자바 프로그램을 실행하기 위한 라이브러리, 자바 가상 기계, 기타 컴포넌트들을 제공한다.
- 자바 프로그램을 단순히 실행만 하고 개발은 하지 않는 일반인들을 위한 환경이다.
3. JDK : Java Development Kit (자바 개발 도구)
- JRE에 추가로 자바 프로그램을 개발하는데 필요한 컴파일러, 디버거와 같은 명령어행 개발 도구를 추가한 것이다.
4. 오류
- 컴파일 오류 : 컴파일 시에 발견되는 오류
- 구문 오류(Syntax error) : 문법 규칙에 어긋날 경우 생기는 오류
- 의미 오류(Semantic error) : 계산식에서 호환되지 않는 서로 다른 타입의 데이터에 대해 계산을 시도할 경우 발생하는 오류
- 논리 오류 : 프로그램이 실행되어도 의도하지 않는 결과를 발생하는 오류. 디버깅(Debuugging)을 통해 논리 오류를 찾고 수정한다.
- 실행 오류 : 프로그램이 실행되는 도중에 발생하는 오류. 자바에서는 예외(Exception)를 사용하여 실행 오류를 처리한다.
5. Exception(예외)의 종류와 발생원인
Exception 종류 |
발생 원인 |
ClassNotFoundException |
클래스를 발견하지 못함 |
CloneNotSupportedException |
Cloneable 인터페이스 미구현 |
IllegalAccessException |
클래스 접근을 못함 |
InstantiationException |
추상 클래스나 인터페이스 인스턴화 |
InterruptedException |
쓰레드가 중단 되었을때 |
NoSuchFieldException |
지정된 필드가 없을때 |
NoSuchMethodException |
지정된 메소드가 없을때 |
(IOException) CharConversionException |
문자 변환에서 예외가 발생했을때 |
(IOException) EOFException |
파일의 끝에 도달했을때 |
(IOException) FileNotFoundException |
파일을 발견하지 않았을 때 |
(IOException) InterruptedIOException |
입출력 처리가 중단되었을 때 |
(IOException) (ObjectStreamException) InvalidClassException |
클래스 내부의 serialize 처리 문제 발생 |
(IOException) (ObjectStreamException) InvalidObjectException |
serialize 오브젝트에서 입력 검증 실패 |
(IOException) (ObjectStreamException) NotActiveException |
스트림 환경이 Active하지 않는데 메소드를 호출한 경우 |
(IOException) (ObjectStreamException) NotSerializableException |
오브젝트를 serialize할 수 없을 때 |
(IOException) (ObjectStreamException) OptionalDataException |
오브젝트 읽을 때 예상밖의 데이터가 있을 경우 |
(IOException) (ObjectStreamException) StreamCorruptedException |
읽은 데이터 스트림이 파손되어 있을때 |
(IOException) (ObjectStreamException) WriteAbortedException |
기록중 예외 발생한 스트림 읽은 경우 |
(IOException) SyncFailedException |
FileDescriptor.sync() 호출 실패 시 |
(IOException) UnsupportedEncodingException |
지정된 문자 부호화 형식 지원안할 때 |
(IOException) UTFDataFormatException |
부정한 UTF-8방식의 문자열 만날 시 |
(RuntimeException) ArithmeticException |
제로제산 등의 산술 예외 발생 시 |
(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) UnsatisfiedLinkError |
클래스에 포함된 링크 정보를 해결하지 못할 때 |
(LinkageError) VerifyError |
클래스 파일안에 부적절한 부분이 있을때 |
ThreadDeath |
쓰레드가 정지해야만 한다는 의미 |
(VirtualMachineError) InternalError |
내부 에러 |
(VirtualMachineError) OutOfMemoryError | 메모리부족으로 메모리를 확보 못함 |
(VirtualMachineError) StackOverflowError | 스택 오버 발생 |
(VirtualMachineError) UnknownError |
심각한 예외 발생 |
[출처] http://silverbullet.tistory.com/entry/Exception%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%EB%B0%9C%EC%83%9D%EC%9B%90%EC%9D%B8
'Programming Language > JAVA' 카테고리의 다른 글
8. 클래스의 구성 멤버와 접근 제한자 (0) | 2017.04.08 |
---|---|
7. Class and Object - 클래스와 객체 (+ 쓰레기 수집) (0) | 2017.04.06 |
5. Control Statement, Looping - 제어문과 루핑(조건문과 반복문) (0) | 2017.03.23 |
4. Operator and Precedence - 연산자와 우선 순위 (0) | 2017.03.23 |
3. Promotion, Casting - 타입 변환 (0) | 2017.03.23 |