This is a blog.

자바 기록 12일차 본문

JAVA/Book Summary

자바 기록 12일차

Calcot 2021. 6. 15. 21:10

혼자 공부하는 자바 / 저자: 신용권.

chapter20. 예외 처리 정리.

 

 

예외 처리

 

 

예외

사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류.

에러와는 다르게 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다.

 

예외와 예외 클래스

일반예외

- 컴파일러 체크 예외 => 프로그램 실행 시 예외가 발생할 가능성이 높음.

- 컴파일 과정에서 해당 예외 처리 코드가 있는지 검사.

실행예외

- 넌 체크 예외. => 실행 시 예측할 수 없이 갑자기 발생.

- 컴파일 과정에서 검사하지 않음.

- RuntimeException의 하위 클래스.

- 오로지 개발자의 경험에 의해서 예외 처리 코드를 작성해야 한다.

- 예외 처리 코드를 넣지 않았을 경우, 해당 예외가 발생하면 프로그램은 곧바로

종료된다.

 

실행예외 종류

NullPointerException

: 객체 참조가 없는 상태.

: null값을 갖는 참조 변수로 객체 연산자인 도트(.)를 사용했을 때 발생.

ArrayIndexOutOfBoundsException

: 배열에서 인덱스 범위를 초과할 경우 발생.

NumberFormatException

: 숫자로 변환될 수 없는 문자가 포함되어 있는 경우 발생.

-ClassCastException

: 잘못된 타입 변환 시에 발생.

: instanceof 연산자를 이용하여 타입 변환이 가능한지 확인하는 것이 좋음.

 

 

예외처리

 

예외 처리 코드

try-catch-finally

: 생성자 내부와 메소드 내부에서 작성되어 일반 예외와 실행 예외가 발생할 경우 예외 처리를 도와준다.

 

try{

예외 발생가능 코드

} catch(예외클래스 e){

예외 처리

} finally {

항상 실행;

}

 

예외 종류에 따른 처리 코드

다중 catch

 

try{

ArrayIndexOutOfBoundsException 발생

 

NumberFormatException 발생

 

} catch(ArrayIndexOutOfBoundsException e){

예외처리1

} catch(NumberFormatException e) {

예외처리2

}

=> catch 블록이 여러 개라 할지라도 단 하나의 catch 블록만 실행된다.

try블록에서 동시 다발적으로 예외가 발생하지 않고, 하나의 예외가 발생하면 즉시 실행을

멈추고 해당 catch 블록으로 이동하기 때문.

 

catch 순서

: 상위 예외 클래스가 하위 예외 클래스보다 아래쪽에 위치해야 한다.

=> 상위 예외 클래스가 하위 예외 클래스보다 아래에 위치했을 경우 하위 예외 클래스의

catch블록은 실행되지 않는다.

=> 하위 예외는 상위 예외를 상속했기 때문.

 

잘못된 코딩 예

try{

 

} catch(Exception e){

예외처리1

} catch(ArrayIndexOutOfBoundsException e){

예외처리2

}

 

올바른 코딩 예

try{

 

} catch(ArrayIndexOutOfBoundsException e){

예외처리1

} catch(Exception e){

예외처리2

}

 

 

예외 떠넘기기

리턴타입 메소드이름(매개변수,...) throws 예외클래스1, 예외클래스2,...{ }

리턴타입 메소드이름(매개변수,...) throws Exception{ }

throws 키워드가 붙어있는 메소드는 반드시 try 블록 내에서 호출되어야 한다. 그리고 catch 블록에서 떠넘겨 받은 예외를 처리해야 한다.

try-catch로 처리하지 않고 다시 throws 키워드로 예외를 떠넘길 수 있다.

main()메소드에서도 throws 키워드를 사용하여 예외를 떠넘길 수 있지만 되도록 try-catch문을 사용해서 예외를 처리하는 것이 좋다.

 

'JAVA > Book Summary' 카테고리의 다른 글

자바 기록 13일차  (0) 2021.06.17
자바 기록 11일차  (0) 2021.06.14
자바 기록 10일차  (0) 2021.06.10
자바 기록 9일차  (0) 2021.06.09
자바 기록 8일차  (0) 2021.06.08
Comments