주니 개발 도서관

자바(JAVA)

(17) throw 와 throws 의 차이

주니홍 2022. 6. 28. 22:29
06 28 정리

throw 

 

예외를 강제로 발생시키는것이 바로 throw 이다

코드를 작성하는 프로그래머가 강제로 예외를 발생시키는 것

 

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
31
32
33
34
public static void main(String[] args) {
 
MyException agaE = new MyException("나이입력을 다시 확인 해주십시오");
Scanner sc = new Scanner(System.in);
 
int num = 0;
        
while (true) {
      System.out.print("나이입력");
      num = sc.nextInt();
 
      try {
                
          if (num <= 0 || 200 < num) { // 나이입력이 잘못된 수치일 경우
          throw agaE;
      }
         System.out.println("당신의 나이는 "+num+" 세 입니다");
         break;
 
      } // 내가만든 오류메세지
      catch (MyException e) {
      System.out.println(e.getMessage());
      } // 발견못한 예외처리 확인
      catch (Exception e) {
      e.printStackTrace();
      System.out.println("발견못한 예외처리");
      } // 예외발생 했을 경우에도 잘못입력 했을경우 다시 입력받기위해
      finally {
          if (num <= 0 || 200 < num) {
          continue;
      }
   }
 
}
cs

 

위의 코드 사용을 위해 throw를 이용하여

 

필요한 부분에만 throw를 던지고 try & catch로 감싸고

MyException 객체를 생성하여

원하는 문구로 예외처리를 표현할 수 있다!

 

 

 

 

throws

 

예외를 강제로 발생시키는데 메소드의 옆에 붙여 사용하고

 

public void method( ) throws  Exception이름 {

 

}

 

메소드 바디 안에서는 지정한 Exception은

해당메소드를 호출한 사용자가 try & catch를 해야한다

" 이 메소드 이런 오류 나올껀데, 사용하는 너가 try & catch해서 사용해! "

 

이미 우린 throws Exception 되있는 메소드를 사용해보았다!

바로 파일입출력 관련 메소드에서 Surround try & catch 이다

위 메소드도 모두 throws 를 사용하고 있었다!

 

그런데.. 메소드 만드는 사람이 throw해서 안에서 정리하면 되지않나?

왜 귀찮게 사용자에게 미루는 걸까?

 

위 사항이 요구조건 이거나

해당 메소드를 사용하여 예외처리를 커스터마이징 할 수 있기 때문!

 

 

 

'자바(JAVA)' 카테고리의 다른 글

(19) 자바 Jsoup을 이용한 웹 크롤링  (0) 2022.07.18
(18)Model View Controller (MVC)  (0) 2022.06.28
(16) 파일 입출력  (0) 2022.06.27
(15) 콜론 ( : ) 의 기능  (0) 2022.06.27
(14) Exception(try,catch,throw)  (0) 2022.06.24