오늘이라도
혼자 공부하는 자바, Ch. 10-2 예외 처리 본문
https://github.com/upcake/Class_Examples
교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다.
1. 예외 처리 코드
- try-catch-finally 블록은 생성자 내부와 메소드 내부에서 작성되어 예외 처리를 할 수 있도록 해줍니다.
try {
예외 발생 가능 코드 ① ⓐ
} catch(예외클래스 e) {
예외 처리 ⓑ
} finally {
항상 실행; ② ⓒ
}
- try 블록에서 예외가 발생한다면 ⓐ - ⓑ - ⓒ순으로 실행 된다.
- 예외가 발생하지 않는다면 catch 블록을 건너 뛰고 ① - ②순으로 실행 된다.
- finally 블록은 생략 가능하다.
- 6라인에서 java.lang.String2 클래스가 존재하지 않기 때문에 ClassNotFoundException이 발생한다.
- 6라인에서 예외가 발생되면 7라인을 실행해서 예외처리를 한다.
- 실행 매개 값을 주지 않아서 8라인에서 예외가 발생되면 10 ~ 12라인을 실행해서 예외 처리한다.
- 실행 매개 값을 줄 때 숫자가 아닌 문자를 주고 실행시키면 16라인에서 NumberFormatException이 발생한다.
- 16라인에서 예외가 발생하면 21라인을 실행해서 예외 처리를 한 후 마지막으로 23라인을 실행하게 된다
2. 예외 종류에 따른 처리 코드
(1) 다중 catch
- try 블록에서 다양한 예외가 발생할 수 있을 경우에는 catch 블록을 여러개 작성해서 예외 처리 한다.
- catch 블록이 여러개 일지라도 예외가 발생했을때 실행을 멈추고 해당 catch 블록으로 이동하기 때문에 하나만 실행된다.
- 6 ~ 7라인에서 ArrayIndexOutofBoundsException이 발생한다면 13라인에서 실행된다.
- 8 ~ 9라인에서 NumberFormatException이 발생한다면 15라인이 실행됩니다.
- 17라인은 예외 발생 여부와 상관없이 실행된다.
(2) catch 순서
- 상위 예외 클래스가 하위 예외 클래스보다 아래쪽에 위치해야 한다.
- 하위 예외는 상위 예외를 상속했기 때문에 상위 예외 타입도 된다.
- 그러므로 상위 예외 클래스의 catch 블록이 위에 있다면, 하위 예외 클래스의 catch 블록은 실행되지 않는다.
(3) 예외 떠넘기기
- 메소드를 호출한 곳으로 예외를 떠넘길 수도 있는데 이때 사용하는 키워드가 throws이다.
- throws 키워드는 메소드 선언부 끝에 작성되어 메소드에서 처리하지 않은 예외를 호출한 곳으로 떠넘기는 역할을 한다.
- throws 뒤에 발생할 수 있는 예외를 나열하는 것이 일반적이지만, throws Exception만으로 모든 예외를 떠넘길 수도 있다.
- throws가 붙어 있는 메소드는 반드시 try 블록 내에서 호출되어야 하고 catch 블록에서 넘겨 받은 예외를 처리해야 한다.
'취업성공패키지 SW 개발자 교육 > Java' 카테고리의 다른 글
23. 객체 지향 ③ , String 타입 ① (0) | 2020.03.24 |
---|---|
22. 객체지향 ② : DAO, DTO 활용 (0) | 2020.03.23 |
혼자 공부하는 자바, Ch. 10-1 예외 클래스 (0) | 2020.03.18 |
21. 알고리즘 ② : 오름차순, 내림차순 / 객체지향 ① (0) | 2020.03.18 |
혼자 공부하는 자바, Ch. 05-3 열거 타입 (0) | 2020.03.17 |