본문 바로가기

개발/Java

[Java] CustomException 설명

반응형

CustomException(사용자 정의 예외)은 프로그래머가 직접 정의하여 발생시킬 수 있는 예외입니다.

 

이것은 Java 및 다른 프로그래밍 언어에서 일반적으로 사용됩니다.

사용자 정의 예외를 만들면 특정한 조건이나 상황에서 예외를 발생시키고 그에 따른 처리를 수행할 수 있습니다.

이는 코드의 가독성과 유지보수성을 높이고 예외 처리를 개선하는 데 도움이 됩니다.

사용자 정의 예외를 만들 때는 다음 단계를 따를 수 있습니다:

Exception 클래스를 상속:
사용자 정의 예외 클래스를 만들기 위해선 Java의 Exception 클래스나 그 하위 클래스 중 하나를 상속해야 합니다.

기본 생성자 및 메시지 전달 생성자 구현:

  • 보통은 예외에 대한 메시지를 지정할 수 있는 생성자를 추가하여 예외 객체를 생성할 때 메시지를 전달할 수 있도록 합니다.

필요에 따라 추가 정보 제공:

  • 필요한 경우 예외 객체에 추가 정보를 포함하여 예외를 보다 구체적으로 설명할 수 있습니다.

예외 발생 시점 결정:

  • 어떤 조건에서 예외를 발생시킬지 결정하고 그에 맞게 예외를 던집니다.

예외 처리:

  • 예외를 잡아서 적절하게 처리합니다. 이는 try-catch 블록을 사용하여 예외를 처리하거나 throws 키워드를 사용하여 예외를 호출한 곳으로 전달하는 것 등이 포함될 수 있습니다.

예를 들어, 사용자 정의 예외를 만들어 보겠습니다:

public class CustomException extends Exception {  
    public CustomException() {  
        super("This is a custom exception.");  
    }  

    public CustomException(String message) {  
        super(message);  
    }  
}

위의 코드에서는 CustomException 클래스를 정의하고, Exception 클래스를 상속하여 사용자 정의 예외를 만들었습니다.

또한 기본 생성자와 메시지를 전달하는 생성자를 구현하였습니다.

이제 이 예외를 사용하여 특정 조건에서 예외를 발생시킬 수 있습니다.

public class Example {  
    public void doSomething() throws CustomException {  
        // 예외를 발생시키는 조건  
        if (/\* 조건 \*/) {  
            throw new CustomException("Something went wrong.");  
        }  
    }  
}  

위의 예제에서는 doSomething 메서드 내에서 특정 조건을 체크하고 조건이 참이면 CustomException을 발생시키고 있습니다.

이렇게 하면 예외가 발생한 경우 해당 메서드를 호출한 곳으로 예외를 전달할 수 있습니다.

장점:

유연성:

  • 프로그래머가 필요에 따라 예외를 정의하고 발생시킬 수 있으므로 예외 처리를 보다 유연하게 할 수 있습니다.

가독성과 유지보수성 향상:

  • 사용자 정의 예외를 사용하면 코드의 의도를 더 명확하게 표현할 수 있습니다. 또한 해당 예외 클래스를 보고 예외가 어떤 상황에서 발생하는지 쉽게 이해할 수 있습니다.

구조화된 예외 처리:

  • 프로그램의 여러 부분에서 동일한 종류의 예외를 다룰 수 있도록 사용자 정의 예외 클래스를 만들어 사용하면 예외 처리가 보다 구조화되고 일관성 있게 처리될 수 있습니다.

코드 재사용:

  • 비슷한 상황에서 발생할 수 있는 예외를 한 번 정의하고 재사용할 수 있으므로 코드 중복을 줄일 수 있습니다.

단점:

과용:

  • 사용자 정의 예외를 과도하게 사용하면 코드의 복잡성이 증가할 수 있습니다.
  • 너무 많은 예외 유형을 정의하면 코드의 가독성이 떨어질 수 있습니다.

오버헤드:

  • 많은 예외 유형을 정의하고 사용하면 메모리 오버헤드가 발생할 수 있습니다.
  • 이는 많은 예외 객체가 생성되고 관리되어야 하기 때문입니다.

코드 이해의 어려움:

  • 너무 많은 예외 유형을 정의하거나 너무 복잡한 예외 계층 구조를 가질 경우 코드를 이해하기 어려울 수 있습니다.

사용자 정의 예외를 적절하게 사용하면 코드의 가독성과 유지보수성을 향상시킬 수 있으며, 예외 처리를 보다 효율적으로 할 수 있습니다.
그러나 과도한 사용이나 잘못된 예외 구조를 가질 경우 오히려 코드의 복잡성을 증가시킬 수 있으므로 신중하게 사용해야 합니다.

반응형