Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- throw e
- getMessage()
- printStackTrace()
- 예외처리
- 자바클래스가 안보일때
- chained exception
- 설치에러
- 인텔리제이
- exception re-throwing
- mvc project 생성
- unchecked예외
- arrays메서드
- POST요청
- 파일을 읽을 수 없을때
- 소스루트설정
- 이클립스
- 예외발생
- 사용자 정의 예외
- source root
- 빨간폴더
- mark directory as
- 멀티 catch 블럭
- checked예외
- 색상에 따른 상태
- 깃베쉬
- 예외 발생
- 빨간파일
- 인텔리제이물음표파일
- 포트충돌
- 스프링 mvc프로젝트가 안뜰때
Archives
- Today
- Total
프로그래밍 스티치
멀티 catch 블럭 본문
멀티 catch 블럭
JDK1.7부터 여러 catch블럭을 '|'기호를 이용해서, 하나의 catch블럭으로 합칠 수 있게 되었으며, 이를 '멀티 catch블럭'이라 한다. '멀티 catch블럭'을 이용하면 중복된 코드를 줄일수 있으며, '|'기호로 연결할 수 있는 예외 클래스의 개수에는 제한이 없다.
try {
//
// } catch (ParentException | ChildException e) { //에러발생!
} catch (ParentException e) { //이렇게 불필요한 부분을 제거
e.printStackTrace();
}
주의할점! 멀티 catch블럭의 '|'기호로 연결된 예외 클래스가 조상과 자손의 관계에 있다면 컴파일 에러가 발생한다.
두 예외 클래스가 조상과 자손의 관계에 있다면 그냥 조상클래스만 써주는 것과 똑같기 때문이다. 불필요한 코드를 제거하라는 뜻에서 에러가 발생!
try{
} catch ( ExceptionA | Exception B e) {
e.methodA(); //에러 왜냐면 methodA는 ExceptionA에 선언되어있다고 가정
if(e instanceof ExceptionA) {
ExceptionA e1 = (ExceptionA)e;
e1.methodA(); //OK. ExceptionA에 선언된 메서드 호출 가능
} else {
주의할점2 ! 멀티 catch는 하나의 catch블럭으로 여러 예외를 처리하는 것이기 때문에, 발생한 예외를 멀티 catch블럭으로 처리하게 되었을 때, 멀티 catch블럭 내에서는 실제로 어떤 예외가 발생한 것인지 알 수 없다. 그래서 참조변수 e로 멀티 catch블럭에 '|'기호로 연결된 예외 클래스들의 공통 분모인 조상 예외 클래스에 선언된 멤버만 사용 할 수있다.
즉 공통 멤버만 사용가능!
'JAVA > 예외처리' 카테고리의 다른 글
finally블럭 (0) | 2022.02.09 |
---|---|
메서드에 예외 선언하기 (0) | 2022.02.08 |
예외 발생시키기 (0) | 2022.02.08 |
try-catch문에서의 흐름 (0) | 2022.02.08 |
예외처리(exception handling) (0) | 2022.02.08 |