본문 바로가기
JAVA/객체지향

예외처리

by chogigang 2023. 2. 23.

코딩을 하다보면 여러가지의 오류를 만날수 있습니다 오작동을 하거나 비정상적으로 종료되는 경우 가 있죠

 

컴파일 에러  컴파일 시에 발생하는 에러입니다

런타임 에러 실행 시에 발생하는 에러 입니다

논리적 에러 실행은 되지만, 의도와 다르게 동작하는 것을 말합니다

 

에러 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 입니다.

예외 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 입니다.

 

 

예외처리하기 try - catch문

 

 

예외처리의

정의 프로그램 실행 시 발생할 수 있는 예외에 대비한 코드를 작성하는 것

목적 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것

 

                        1.컴파일러 에러

프로그램 에러 2. 런타임 에러           Error : 심각한 에러

                                                           

                                                        Exception :미약한 에러

                                                           

                                                                Exception rm wkthsemf

                                                                  RuntimeExcaption과 그 자손들

 

 

try-catch문에서의 흐름

 

 

 

 

 

printStackTrace()와 getMessage()

 

printStackTrace() 예외발생 당시의 호출스택(Call Stack) 에 있었던 메서드의 정보와예외 메시지를 화면에 출력합니다

 

getMessage() 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있습니다.

 

멀티 catch 블럭

 

내용이 같은 catch 블럭을 하나로 합친 것입니다.

 

 

 

 

try{
        ....
    catch (ExceptionA | ExceptionB e) {
        e.printStackTrace();
        }
    }

 

 

예외 발생시키기

 

1.먼저 . 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음

Exception e = new Exception ("고의로 발생시켯음");

 

2.키워드 throw를 이용해서 예외를 발생시킵니다

throw e;

 

 

 

 

메서드에 예외 선언하기

메서드에 예외르르 선언하려면 메서드의 선언부에 키워드 throws를 사용해서 메서드 내에서 발생할 수 있는

예외를 적어주기만 하면 됩니다. 그리고 예외가 여러 개일 경우에는 쉼표(.)로 구분합니다.

 

void method() throws Exception,Exception2,....ExceptionN{
        //메서드의 내용
    }


    void method() throws Exception(모든 예외의 최고 조상){

    }
}

 

 

finally블럭

 

발생여부에 상관없이 실행되어야할 코드를 포함시킬 목적 으로 사용됩니다.

 


try {
    //예외가 발생할 가능성이 있는 문장들을 넣습니다.
        
    }catch (Exception el){
    //예외처리를 위한 문장을 적습니다
    } final {
    //예외의 발생여부에 관계없이 항상 수행되어야하는 문장들을 넣습니다
        //finally블럭은 try-catch문의 맨 마지막에 위치해야합니다.
    }

 

사용자정의 예외 만들기

 

 

 

예외 던지기

 

 한 메서드에서 발생할 수 있는 예외가 여럿인 경우 몇 개는 try -catch문을 통해서 메서드 내에서 자체적으로 처리하고, 그 나머지는 선언부에 지정하여 호출한 메서드에서 처리하도록 함으로써 양쪽에서 나눠서 처리되도록 할 수 있습니다.

 

 

 

연결된 예외

 

 

 

 

 

'JAVA > 객체지향' 카테고리의 다른 글

String클래스  (0) 2023.02.23
hashCode(),toStirng()  (0) 2023.02.23
내부 클래스  (0) 2023.02.23
인터페이스  (0) 2023.02.23
추상 클래스  (0) 2023.02.23