1..프로그램 오류
컴파일 에러
: 컴파일할때 발생하는 에러 / 고치기 전까지는 실행x
런타임 에러
: 실행 중 발생하는 에러 / 실행은 되지만 프로그램 종료됨
논리적 에러
: 작성 의도 다르게 동작 / 실행o 프로그램 종료x
2 . error / exception
런타임 에러 - 에러(error) : 수습될 수 없는 심각한 오류
- 예외(exception) : 미리 예측하고 처리할 수 있는 미약한 오류
3. 예외 처리
- 예외의 발생에 대비한 코드를 작성하는 것
- 프로그램의 비정상 종료를 막고, 정상적인 실행 상태르 유지하는 것
4. 예외 클래스 계층 구조
- 예외 클래스들은 상속구조를 가지고 카테고리화 되어 있음.
Exception 클래스들 | RuntimeException 클래스들 |
Io Exception (입출력 예외) ClassNotFoundException (클래스 존재x) ..... 사용자 실수, 파일없음 등 외적인 요인 |
ArithmeticException (산술계산 예외) ClassCastException (형변환 예외) NullPointerException(null값) IndexOutBoundsException (배열 범위 벗어남) .... 프로그래머 실수로 발생한 예외 |
5. 예외정보 가져오기
- 예외가 발생하면 예외 객체가 생성되고 객체 안에 예외 정보가 들어가게 되며,
예외 정보는 메서드를 통해 가져올 수 있음
printStackTrace() : 예외 발생 당시의 호출스택에 있었던 메서드 정보와 예외 메세지를 화면에 출력함.
getMessage() : 발생한 예외클래스의 인스턴스에 저장된 메세지 출력가능
try{
} catch(Exception e){
System.out.println("에러 메세지 : " + e.getMessage());
e.printStackTrace();
}
6. checked 예외 , unchecked 예외
checked예외
: 예외처리 필수 / Exception 과 자손들
unchecked예외
: 예외처리선택 / RuntimeException 과 자손들
7. 예외 처리 방법 (1) try ~ catch
- try ~ cath 문
(1) try~catch 작성 방법
try{
예외가 발생할 가능성이 있는 문장 작성
} catch(예외 작성 | 여러개 | 작성가능){
예외가 발생했을 경우, 이를 처리하기 위한 문장 작성
}
(2) 멀티 catch 블럭
: 내용이 같은 catch블럭을 하나로 합치기 가능, 코드 중복제거
try {
} catch(ExceptionA e) {
e.printStackTrace();
}
catch(ExceptionB e2) {
e2.printStackTrace();
}
=> 내용 동일한 chatch 블럭
try {
} catch(ExceptionA | ExceptionB e) {
e.printStackTrace();
}
=> 합치기 가능
- thorw (예외 발생시키기)
(1) new연산자로 예외 클래스의 객체 생성
(2) throw로 예외 발생
(3) 예시
try{
Exception e = new Exception("예외발생시키기");
throw e;
} catch(Exception e){
System.out.println("에러 메세지 : " + e.getMessage());
e.printStackTrace();
}
8. 예외 처리 방법 (2) throws _메서드에 예외 선언하기
- thorws를 이용해서 메서드가 호출시 발생가능한 예외를 호출한 쪽에 위임함
- throws는 위임만 하다가 비정상 종료로 끝나기 때문에 throws로 예외를 발생시키는 것은 최종적인 해결책은 아님
메서드()뒤에 thorws 예외선언
public void method() throws Exception1, Exception2, Exception3,....{
}
9. finally블럭
- 예외 발생여부와 관계없이 수행되어야하는 코드를 넣을 수 있음.
- finally블럭은 try-catch문의 맨 마직막에 위치해야 함.
try{
예외발생 가능성 문장
} catch (Exception e){
예외처리 문장
}finally {
수행되어야하는 문장
}
10. 예외 되던지기(exception re - throwing)
- 예외 처리 후 다시 예외 발생시킴
- 호출한 메서드와 호출된 메서드 모두 예외처리 함
'프로그래밍 > java' 카테고리의 다른 글
[자바 / Java] Iterator() , descendingIterator(), Comparable, Comparator (0) | 2022.09.04 |
---|---|
[자바/ JAVA] 컬렉션(Collection)이란? (0) | 2022.09.04 |
[자바JAVA] 제네릭(generic)_와일드카드 (0) | 2022.09.03 |
[자바 / Java] Wrapper 클래스(Auto Boxing과 Auto UnBoxing) (0) | 2022.09.03 |
[자바 / Java] StringBuilder의 자주 사용되는 메소드 (0) | 2022.09.03 |