728x90
1️⃣예외처리
1.1 프로그램의 오류
- 오류 : 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우
- 컴파일 에러 : 컴파일 시 발생하는 에러
- 런타임 에러 : 실행 시 발생하는 에러
- 논리적 에러 : 실행은 되지만 의도와 다르게 동작하는 에러
에러 | 수습이 불가능한 심각한 오류 |
예외 | 수습 가능한 미약한 오류 |
1.2 예외 클래스의 계층구조
위 사진처럼 예외 클래스는 2개로 나뉘어진다.
- Exception : 외부의 영향으로 발생 Ex) 존재하지 않는 파일의 이름을 입력, 클래스 이름을 잘못 적기...
- runtimeException : 주로 프로그래머의 실수에 의해 발생 Ex)배열의 범위를 벗어남, 값이 null인 참조변수의 멤버 호출...
1.3 예외처리하기 - try - catch문
- 예외처리 : 비정상적인 종료를 막고 정상적인 실행상태를 유지
try{
//예외 발생 가능성이 있는 문장 삽입
} catch(exception e){
//e가 발생했을 경우, 이를 처리하기 위한 문장 삽입
}
- 1개 try에 N개의 catch
- 예외처리는 단 한개만 가능
1.4 try - catch문에서의 흐름
- try블럭 내에서 예외가 발생한 경우
더보기
1. 발생한 예외와 일치하는 catch블럭이 있는지 확인
2. 일치하는 블럭이 있다면 블럭 내 문장을 수행하고 일치하는 문장이 없다면 예외처리 되지 못한다.
- try블럭 내에서 예외가 발생하지 않는 경우
더보기
1. catch블럭을 거치지 않고 try - catch문을 빠져나간다.
1.5 예외의 발생과 catch블럭
- printStackTrace() : 예외발생시 당시 호출스택에 있던 메서드 정보와 예외메세지 출력
- getMessgae() : 예외클래스의 인스턴스에 저장된 메세지 출력
- 멀티 catch블럭 : |을 이용하여 catch블럭을 합치기 가능(단, 두 예외 클래스가 부모자식 관계라면 에러 발생)
1.6 예외 발생시키기
- throw를 이용해 고의로 예외 발생시키기
더보기
try{
throw new Exception("고의로 발생시켰음");
}catch (Exception e){
System.out.println("에러메시지 : "+e.getMessage());
}
1.7 메서드에 예외 선언하기
- 메서드 선언부에 throws를 사용하여 예외선언 하기
void method() throws Exception1, Exception2, ...{}
1.8 finally블럭
- 예외의 발생여부와 상관없이 실행되어야 할 코드를 포함 시킬 목적
try{
//예외 발생 가능성이 있는 문장들
}catch{
//예외 발생시 실행 될 문장들
}finally{
//예외 발생여부와 관계없이 실행 될 문장들
}
728x90
'자바' 카테고리의 다른 글
[자바의 정석] - 12. 지네릭스, 열거형, 애너테이션 (0) | 2023.05.22 |
---|---|
[자바의 정석] - 11. 컬렉션 프레임 (0) | 2023.05.15 |
[자바의 정석 ] - 7장. 객체지향 프로그래밍Ⅱ (0) | 2023.04.25 |
[자바의 정석] - 5. 배열 / 6. 객체지향 (0) | 2023.04.19 |
[JAVA] - 상속 (0) | 2023.04.18 |