Java/Java

try(), catch() - 예외 처리(Exception Handling)

마손리 2023. 3. 7. 15:33

컴파일 에러

컴파일 에러란 이름 그대로 컴파일 할때 발생하는 에러이다. 주로 문법적인 문제로 인한 신택스(syntax)오류로 발생하며 신텍스 에러(Syntax Errors)라고도 한다.

컴파일 에러는 자바 컴파일러가 오류를 감지하여 사용자에게 알려준다. 흔히 에디터(IDE)에서 나타나는 에러가 이에 해당된다.

 

런타임 에러

런타임, 즉 코드가 실행되며 발생하는 에러이며 컴퓨터가 수행할 수 없는 특정한 작업을 요청할 때 발생한다. 런타임 에러는 현재 실행중인 코드가 잘못되었다면 자바 가상 머신(JVM)이 감지하여 해당 코드부터 실행을 중단한다.

 

 

예외 클래스

자바에서는 오류를 발견하면 예외 클래스로부터 인스턴스를 생성하며 그 인스턴스를 통해 예외처리를 한다.

 

예외클래스의 상속 계층도

모든 예외클래스의 최고 상위 클래스는 Exception이며 이 클래스는 다시 일반예외 클래스실행예외 클래스로 나뉜다.

 

일반 예외 클래스(Exception)

Runtime Exception와 그 하위 클래스들을 제외한 다른 모든 Exception 클래스들이 포함되며 컴파일러가 코드 실행 전에 예외 처리 코드 여부를 검사하여 checked 예외라 한다.

 

실행 예외 클래스(Runtime Exception)

Runtime Exception클래스와 그 하위 클래스를 실행 예외 클래스라고 하며 컴파일러가 예외 처리 코드 여부를 검사하지 않아 unchecked 예외라고도 한다.

 

 

try - catch 문

try {
    // 예외가 발생할 가능성이 있는 코드를 삽입
} 
catch (ExceptionType1 e1) {
    // ExceptionType1 유형의 예외 발생 시 실행할 코드, 예)Exception
} 
catch (ExceptionType2 e2) {
    // ExceptionType2 유형의 예외 발생 시 실행할 코드, 예)ArrayIndexOutOfBoundsException
} 
finally {
    // finally 블럭은 옵셔널
    // 예외 발생 여부와 상관없이 항상 실행
}

try{ 코드 }

예외, 즉 오류가 발생할 가능성이 있는 코드를 작성해준다.

이후 예외가 발생할경우 오류가 발생하지 않고 catch문이 실행되며 예외가 발생하지 않을경우 finally문이 실행된다.

 

 

catch(예외유형 매개변수){ 코드 }

try문에서 예외가 발생한경우 실행되는 코드로 예외 종류에따라 다른 대응을 만들거나 Exception 클래스를 이용하여 모든 예외에 대한 처리를 같게 할수도 있다. catch의 코드가 끝나게되면 finally블럭으로 이동하며 이렇게 예외 처리가 완료된뒤 뒤이어 오는 모든 코드를 완료한 후 해당 프로세스는 "정상종료" 된다.

 

 

의도적 예외 만들기

        try {
            Exception intendedException = new Exception("최상위 예외 인스턴스 생성");
            throw intendedException; // 생성된 인스턴스를 통해 예외 발생시킴
        } catch (Exception e) {
            System.out.println("고의로 예외 발생시키기 성공");
        }

try문 안에 throw를 이용하여 의도적으로 예외를 만들어 볼수도 있다.

 

 

'Java > Java' 카테고리의 다른 글

람다(Lambda)  (2) 2023.03.09
컬렉션 프레임워크 (Collection Framework)  (0) 2023.03.08
제네릭 (Generic)  (0) 2023.03.07
열거형 (Enum)  (0) 2023.03.06
의존성 주입(Dependency Injection, DI)  (0) 2023.03.05