error / exception
컴파일 에러 : 프로그램의 실행을 막는 소스 코드상의 문법 에러
런타임 에러 : 프로그램 실행 중 발생하는 에러
시스템 에러 : 컴퓨터 오작동으로 인한 에러, 소스 코드 수정으로 해결 불가(버그, 연산지연)
IOException -
RuntimeException 후손 클래스
Unchecked Exception으로 주로 프로그래머의 부주의로 인한 오류인 경우가 많기 때문에
예외 처리보다는 코드를 수정해야 하는 경우가 많음
NegativeArraySizeException : 배열이 음수의 크기일때 발생 예외
배열 크기를 음수로 지정한 경우 발생
배열 크기를 0보다 크게 지정해야 함
NullPointerException :
Null인 참조 변수로 객체 멤버 참조 시도 시 발생
객체 사용 전에 참조 변수가 null인지 확인
ArithmeticException : 산술적 예외
/by zero ==> 0으로 나눌 수 없습니다
0으로 나누는 경우 발생
if문으로 나누는 수가 0인지 검사
InputMismatchException :
Scanner를 사용하여 데이터 입력 시
입력 받는 자료형이 불일치할 경우 발생
ClassCastException : 업캐스팅 / 다운캐스팅 오류
Cast연산자 사용 시 타입 오류
instanceof 연산자로 객체타입 확인 후 cast연산
try~catch문
try : 예외가 발생할 것 같은 코드 수행을 시도하다
-> 수행 중 예외 발생시, 예외 객체가 던져짐(throw)
catch(던진것을 받다) : try에서 던져진 예외를 잡아서 처리 -> 예외를 잡아 처리했기 때문에 프로그램이 종료되지 않음 (Exception간의 상속 관계 고려해야 함)
finally : Exception 발생 여부와 관계없이 꼭 처리해야 하는 로직 기술
오버라이딩 : 상속받은 메서드를 자식이 재정의
성립조건
메소드 선언 시 throws Exception명을 추가하여 호출한 상위 메소드에게 처리 위임
Exception 발생하는 곳에서 throw new 예외클래스명()으로 발생
ex)
public void method() throws IOException {
// IOException 예외 강제 발생
throw new IOException();
// 발생한 예외처리 하는 방법
// 1) try - catch로 감싸서 현재 위치에서 처리
// 2) throws로 호출한 메서드로 예외를 위임하여 처리
}