일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 비전공자 #코딩공부 #혼자공부하는자바 #혼공자 #자바 #기록 #정리
- 음악
- python
- 정리
- javascript
- javaAlgorithm
- 데이터베이스실무
- 기록
- 데이터베이스
- 알고리즘
- java
- 정처기
- github
- GIT
- 파이썬
- 비전공자 #자바공부 #혼자공부하는자바 #혼공자 #자바 #기록 #정리
- 자바
- programmers
- 혼공자
- 혼자공부하는자바
- 비전공자
- 비전공자 #코딩공부 #혼자공부하는자바 #혼공자 #자바 #정리 #기록
- Algorithm
- 정보처리기사실기
- 자바알고리즘
- 정처기실기
- 정보처리기사
- 코딩테스트
- 개발자
- 수제비
- Today
- Total
This is a blog.
자바 기록 12일차 본문
혼자 공부하는 자바 / 저자: 신용권.
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 |