예외 vs. 에러
- 예외
- 연산 오류, 숫자 포맷 오류 등과 같이 상황에 따라 개발자가 해결할 수 있는 오류
- 에러
- 자바 가상 머신 자체에서 발생하는 오류로, 개발자가 해결할 수 없는 오류
- 차서책을 선택하는 것 자체도 불가능 ex) 메모리가 꽉 찼을 때, 쓰레드가 죽었을 때 등
일반 예외(Checked Exception)
- 컴파일 전에 예외 발생 문법을 검사하며, 예외 처리를 하지 않으면 문법 오류가 발생
- ClassNotFoundException
- 클래스를 메모리에 동적으로 로딩하는 과정에서 해당 클래스가 존재하지 않을 때 발생
- InterruptedException
- Thread.sleep(시간) 메서드를 위한 예외
- IOException
- write(), read() 때 발생할 수 있는 예외
- FileNotFoundException
- 파일을 읽을 때 해당 경로에 파일이 없으면 발생
- CloneNotSupportedException
실행 예외(Unchecked Exception=Runtime Exception)
- 실행할 때 발생하는 예외로, 예외 처리를 따로 하지 않더라도 문법 오류가 발생하지 않음
- ArithmeticException
- ClassCastException
- 다운캐스팅이 불가능한 상황에서 다운캐스팅을 시도할 때 발생
- ArrayIndexOutOfBoundsException
- NumberFormatException
- 문자열을 숫자로 바꿀 때 숫자 형식이 아니라면(ex) “10!”) 발생