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


+ Recent posts