본문 바로가기
Java

Java 상위로 예외 넘기기 throws

by 하르싼 2022. 10. 14.
반응형

Java 상위로 예외 넘기기 throws

throws : 호출한 상위 메소드로 예외처리 넘기기, 메소드 선언부에 작성

A메소드에서 B메소드를 호출시 예외가 발생했을 경우 B메소드 자체적으로 try-catch를 통해 처리 할 수 있지만

B메소드를 여러곳에서 사용한다고 할 때에는 호출하는 여러 메소드 마다 필요한 예외가 각각 다를수 도 있기에

예외처리를 구현할 기회를 줄 수 있다.

 

throws

사용하여 호출한 메소드로 예외 책임을 전가하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class ThrowsTest {
    public static void main(String[] args){
        try {
            returnThrows(2);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            System.out.println("Class Catch");
            System.out.println(e.toString());
        } catch (NullPointerException e) {
            System.out.println("Null Catch");
            System.out.println(e.toString());
        } catch (NumberFormatException e) {
            System.out.println("Number Catch");
            System.out.println(e.toString());
        }
 
    }
    
    public static void returnThrows(int a) throws ClassNotFoundException,NullPointerException,NumberFormatException{
        
        if(a == 1) {
            throw new ClassNotFoundException();
        }else if(a == 2) {
            throw new NullPointerException();
        }else {
            throw new NumberFormatException();
        }
    }
 
}
cs

 

 

try ~ catch

해당 메소드에서 예외 처리하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class ThrowsTest {
    public static void main(String[] args){
            returnThrows(3);
    }
    
    public static void returnThrows(int a){
        
        try {
        if(a == 1) {
            throw new ClassNotFoundException();
        }else if(a == 2) {
            throw new NullPointerException();
        }else {
            throw new NumberFormatException();
        }
        }catch(ClassNotFoundException e) {
            System.out.println("기존 메소드 Class e");
            System.out.println(e.toString());
        }catch(NullPointerException e) {
            System.out.println("기존 메소드 Null e");
            System.out.println(e.toString());
        }catch(NumberFormatException e) {
            System.out.println("기존 메소드 Number e");
            System.out.println(e.toString());
        }
        
    }
 
}
cs

 

반응형

'Java' 카테고리의 다른 글

Enum equals , ==  (0) 2024.04.11
Mac Java 버전 관리  (0) 2023.03.13
Windows OpenJdk 다운로드 및 설치  (0) 2022.10.21
Java HMAC 암호화  (2) 2021.12.15
List removeAll(Collection<?> c)  (0) 2021.12.03

댓글