프로그래밍/java

[자바/JAVA] 예외처리(try-catch , thows, finally블럭, RuntimeException)

pupu91 2022. 9. 3. 17:17
반응형

 

 

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)

- 예외 처리 후 다시 예외 발생시킴

- 호출한 메서드와 호출된 메서드 모두 예외처리 함

 

 

 

 

반응형