자바의 예외(Exception)

용씨·2023년 2월 3일
0

자바 개념 시리즈

목록 보기
1/9

개념

개발자가 코드를 잘못 작성할 때 예외가 발생한다. 예외가 발생하면 프로그램이 곧바로 종료되는 것은 에러와 동일하지만, 예외 처리를 통해 계속 실행 상태를 유지할 수 있다.

예외

https://www.benchresources.net/exception-hierarchy-in-java/

  • Exception Class
    • RuntimeException과 그 자식 클래스: 컴파일러가 예외 처리 코드 여부를 검사하지 않는다.
    • 그 밖의 예외 클래스: 컴파일러가 예외 처리 코드를 검사한다.

사용 예시

try-catch-finally

try {
	// 예외 발생 가능 코드를 넣는다.
} catch(예외클래스 e) {
	// 예외 처리 코드를 넣는다.
} finally {
	// 예외 발생 여부와 상관없이 항상 실행되는 코드다.
    // try 블록과 catch 블록에서 return 문을 사용하더라도 finally 블록은 항상 실행된다.
}

예외가 발생하면 예외 객체가 catch블록의 매개변수 e 에 대입된다.

  • e.getMessage() : 예외가 발생한 이유만 리턴한다.
  • e.toString(): 예외의 종류와 예외가 발생한 이유를 리턴해준다.
  • e.printStackTrace(): 예외가 어디서 발생했는지 추적한 내용, 예외의 종류, 예외가 발생한 이유를 리턴해준다.

예외 떠넘기기

예외는 throws 키워드로 떠넘기기가 가능하다.

void retuenException() throws 예외클래스 {}

retuenException()에서 예외를 처리하지 않고 떠넘겼기 때문에 이 메소드를 호출하는 곳에서 예외를 받아 처리해야 한다.

사용자 정의 예외

사용자 정의 예외는 컴파일러가 체크하는 일반 예외로 선언할 수도 있고, 컴파일러가 체크하지 않는 실행 예외로 선언할 수도 있다. 통상적으로 일반 예외는 Exception의 자식 클래스로 선언하고, 실행 예외는 RuntimeException의 자식 클래스로 선언한다.

public vlass XXXException extends [Exception | RuntimeException] {
	public XXXException() {} // 기본 생성자
    public XXXException(String message){ // 예외 메시지를 입력받는 생성자
    	super(message);
    }

XXXException e.getMessage() 호출 시 사용자가 정의한 message 매개변수의 값이 출력된다. message에 예외 메시지가 발생된 이유를 넣으면 된다.

예외 발생시키기

코드로 예외를 발생시킬 수 있다. throw 키워드로 예외 객체를 제공하면 된다.

throw new Exception();
throw new RuntimeException();
throw new XXXException();

// 예외 메시지 정의하기
throw new Exception("예외메시지");
throw new RuntimeException("예외메시지");
throw new XXXException("예외메시지");

throw된 예외는 try-catch 블록으로 예외를 직접 처리할 수도 있고, throws Exception으로 예외를 떠넘길 수도 있다.

profile
아침형 인간이 목표

0개의 댓글