본문 바로가기
웹프로그래밍 무작정따라하기/JAVA_Spring

[JAVA] 예외처리 - try~catch

by RIMD 2020. 8. 10.

예외처리 - Exception Handling

: 예외가 발생된 코드 내에서 예외를 처리하는 방법

 

예외처리 클래스들간의 상속관계 계층구조

 

 

ArithmeticException : 0으로 나누는 경우에 발생됨

NullPointerException : null값을 가진 참조변수로 객체 멤버 접근시 발생됨

ArrayIndexOutOfBoundsException : 배열의 index번위를 넘어서 참조하는 경우

ClassCasstException : 형변환 연산자 사용시 타입이 일치하지 않는 경우 발생됨

 

 


try~ catch 문 사용

try{

                  문장1; 문장2;

}catch( 예외클래스명 e){

                  예외처리코드;

}


다중 catch 문 사용

try{

                  문장1; 문장2;

}catch( 예외클래스명 e1){

                  예외처리코드;

}catch( 예외클래스명 e2){

                  예외처리코드;

}catch( 예외클래스명 e3){

                  예외처리코드;

}

 

try 블록 내에서 실행되는 문장이 여러 개 있는 경우에 ,

발생되는 예외가 달라 질 수 있다. 이런 경우에 사용 가능하다.( 다형성 적용 가능 )

※주의할 점은 반드시 계층구조가 낮은 클래스부터 catch해야 됨

 


finally문 사용

try{

                  문장1; 문장2;

}catch( 예외클래스명 e1){

                  예외처리코드;

}catch( 예외클래스명 e2){

                  예외처리코드;

}finally{

                  반드시 수행되는 문장

}

 

예외 발생 여부와 상관없이 항상 실행되어야 하는 문장을 지정한다


예제)

다중 try~catch 문

 

printStackTrace() 메서드 : 예외가 발생되기까지의 모든 과정과 예외코드 라인번호를 출력함

                                    (자세한 예외정보를 출력하거나 디버깅을 위해서 printStackTrace()메서드를 사용함)

getMessage() 메서드 : 간략하게 예외정보를 출력함

 

 

예외종류 2가지

1. Compile checked 예외

   - 컴파일시 예외처리 여부를 컴파일러가 체크한다. 예외처리가 안되어 있으면 컴파일 에러가 발생됨

   - IOException 과 SQLExceptino 계열

     자바I/O 및 데이터베이스 관련 작업을 수행하는 메소드를 사용하기 위 해서는 반드시 예외처리를 해야 된다.

 

2. Compile unchecked 예외

   - 컴파일시 예외처리 여부를 컴파일러가 체크하지 않는다

     컴파일러가 체크하지 않는 이유는 개발자가 코드를 잘못 작성했기 때문에

     발생된 예외이기 때문이다.

   - RuntimeExceptions계열

 

 

댓글