Java

Java 예외처리

최종군 2024. 6. 29. 20:06

 

 

 

프로그램 오류 : 프로그램 수행 시 치명적 상황이 발생하여 

비정상 종료 상황이 발생한 것, 프로그램 에러라고도 한다.

 

컴파일 에러 : 프로그램의 실행을 막는 소스 상의 문법 에러, 소스 구문을 

수정하여 해결 

 

런타임 에러 : 입력 값이 틀렸거나 배열의 인덱스 범위를 벗어났거나 

계산식의 오류 등 

 

. 시스템 에러 : 컴퓨터 오작동으로 인한 에러, 소스 구문으로 해결 불가

 

 

예외처리(Exception)

Unchecked Exception으로 주로 프로그래머의 부주의로 인한 오류인 경우가 많기 때문에

예외 처리보다는 코드를 수정해야 하는 경우가 많음

 

RuntimeException 후손 클래스

 

ArithmeticException :

0으로 나누는 경우 발생 if문으로 나누는 수가 0인지 검사

 

NullPointerException :

 

Null인 참조 변수로 객체 멤버 참조 시도 시

발생 객체 사용 전에 참조 변수가 null인지 확인

 

NegativeArraySizeException

배열 크기를 음수로 지정한 경우 발생

배열 크기를 0보다 크게 지정해야 함

 

ArrayIndexOutOfBoundsException

배열의 index범위를 넘어서 참조하는 경우

배열명.length를 사용하여 배열의 범위 확인

 

배열명.length를 사용하여 배열의 범위 확인

Cast연산자 사용 시 타입 오류

instanceof연산자로 객체타입 확인 후 cast연산

 

 

예외처리 방법 : 

try~catch문을 이용하여 예외처리

 

try : exception 발생할 가능성이 있는 코드를 안에 기술

catch : try 구문에서 exception 발생 시

해당하는 exception에 대한

처리 기술 여러 개의 exception처리가 가능하나 exception간의 상속 관계 고려

 

finally : exception 발생 여부와 관계없이 꼭 처리해야 하는 로직 기술

중간에 return문을 만나도 finally구문은 실행되지만

System.exit();를 만나면 무조건 프로그램 종료

주로 java.io나 java.sql 패키지의 메소드 처리 시 이용

 

Exception 처리를 호출한 메소드에게 위임

메소드 선언 시

throws ExceptionName문을 추가하여 호출한 상위 메소드에게 처리 위임

계속 위임하면 main()메소드까지 위임하게 되고 거기서도 처리되지 않는 경우 비정상 종료

 

 

예외 상황을 알리기 위한 클래스

 

ArithmeticException

수학 연산에서의 오류 상황을 의미하는 예외 클래스

 

InputMismatchException

클래스 Scanner를 통한 값의 입력에서의 오류 상황을 의미하는 예외 클래스

 

try { ...관찰 영역... }

 

 

catch(ArithmeticException e) { ...처리 영역... }