상세 컨텐츠

본문 제목

[예외] 예외 던지기

자바

by esoesmio 2023. 3. 23. 09:41

본문

 

1. 예외 넘기기

 

결국은 메소드에서 오류처리가 나야하는데 그걸 트라이 캐치 부분으로 떠넘긴다는 뜻이다.

  • 메소드 내부에서 예외가 발생할 수 있는 코드를 작성할 때 try-catch 블록으로 예외를 처리하는 것이 기본이지만 메소드를 호출한 곳으로 예외를 떠넘길 수도 있습니다.
  • 예외가 난 곳에서 즉시 처리하지 않고 다른 메소드에서 처리하는 방식입니다.
  • throws 키워드는 메소드 선언부 끝에 작성되어 메소드에서 처리하지 않은 예외를 호출한 곳으로 떠넘기는 역할을 합니다.
  • throws 키워드가 붙어있는 메소드는 반드시 try 블록 내에서 호출되어야 하고 catch 블록에서 떠넘겨 받은 예외를 처리해야 합니다.

[형식]

리턴타입 메소드명(매개변수, ...) throws 예외클래스1, 예외클래스2, ... {
    ...

}

2. 예시

예외가 발생 가능성이 있는 메소드에서 예외처리

  • Exception(NullPointerException) 예외를 활용해 예시를 작성하였습니다.
  • upperCase 메소드는 문자열을 받아 대문자로 만들어 return 하는 함수로 해당 함수에서 자체적으로 예외처리를 했습니다. 
public static void main(String[] args) {
    System.out.println(upperCase(null));
}

private static String upperCase(String str) {

    String returnStr = null;

    try {
        returnStr = str.toUpperCase();
    } catch (Exception e) {
        returnStr = "Exception";
    }

    return returnStr;
}

 

throws로 예외 떠넘겨서 예외처리

  • throws 키워드가 붙어있는 메소드는 반드시 try 블록 내에서 호출되어야 하고 catch 블록에서 떠넘겨 받은 예외를 처리해야 합니다.
public static void main(String[] args) {
    try {
        System.out.println(upperCase(null));
    } catch (Exception e) {
        System.out.println("Exception");
    }
}

private static String upperCase(String str) throws Exception {
    return str.toUpperCase();
}
예외 떠넘기기

3. main() 

  • 다음과 예시와 같이 upperCase 메소드에서 던진 예외를 main 메소드에서 처리하지 않고 똑같이 throws 키워드를 이용해 예외를 떠넘길 수 있습니다.
  • main 메소드가 떠넘기게 예외를 떠넘기게 되면 결국 JVM이 예외 처리를 하여 예외 내용을 Console에 출력하는 것으로 예외를 처리합니다.
  • main() 메소드에서 throws Exception을 붙이는 것은 좋지 못한 예외 처리 방법입니다. 프로그램이 알 수 없는 예외 내용을 출력하고 종료되는 것은 좋지 않을뿐더러 문제가 있는 것을 처리하지 않을 경우 더 큰 문제를 야기할 수도 있습니다.
  • main()에서 try-catch 블록으로 예외를 최종 처리하는 것이 바람직합니다.
public static void main(String[] args) throws Exception {
    System.out.println(upperCase(null));
}

private static String upperCase(String str) throws Exception {
    return str.toUpperCase();
}

 

좋아요공감
공유하기
게시글 관리
구독하기

BackendJava카테고리의 다른글

[Java] 자바 8 Stream API 소개 (java.util.stream)  (0)[Java] 자바 커스텀 예외 만들기(Custom Exception)  (0)[Java] 자바 try-with-resource (AutoCloseable)  (0)[Java] 자바 예외 처리(Exception, RuntimeException)  (0)[Java] DTO List 정렬 방법 (Comparator API)  (0)
2021.12.31
2021.12.28
2021.12.26
2021.12.25
2021.12.22

댓글을 달아 주세요

댓글을 남겨주세요
 
 
 
 
 

사이드바

COPYRIGHT 코딩트리, ALL RIGHT RESERVED.

검색

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

'자바' 카테고리의 다른 글

[패스워드 암호화 저장] Hash, Salt  (0) 2023.03.23
[자료구조] Array와 List  (0) 2023.03.23
[예외] try catch  (0) 2023.03.22
[예외] try catch  (0) 2023.03.22
[Object] 자바 객체복사2  (0) 2023.03.22

관련글 더보기

댓글 영역