Day19 - 예외 던지기 throws

2021. 3. 12. 13:50JAVA 공부

안녕하세요 여러분 ~

오늘은 대면수업을 하는 날입니다 ~

금요일이기도 하고 , 날씨가 흐려서 그런지, 굉장히 귀찮네요

특히 .... ! 블로그 포스팅 하는게 무우지 귀찮습니다

 

블로그 포스팅하면 뿌듯하긴 하지만, 하기 전에는 너무 귀찮아요

매일매일 블로그 포스팅을 그만둘까 생각도 합니다

그렇지만 시작한 건 끝을 보는게 좋은 법이고, 시작한 이유가 ... 배운 것들을 정리해서 나중에 찾아보기 위해서 이니까요

그리고 오늘의 일을 내일로 보내면, 내일이 2배는 힘들어지고, 내일 다 못하면, 또 다음날로 넘어가고 ... 악순환의 반복이기 때문에, 특별한 이유가 없으면 오늘 하는게 좋겠습니다ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ

 

이번에는 예외 던지기에 대해 알아 봅시다. 어제 예외 처리 try catch finally 에 대해 배웠는데, 예외가 발생하는 곳에서 바로바로 try catch 를 썻었죠?

 

예외 던지기

예외 던지기는, 메서드 or 생성자 에 붙여 쓸 수 있습니다.

메서드, 생성자 내부에서 예외 처리하는 try catch 를 써도 되지만, 우리가 하고 싶은건...

 

ex) 나는 메서드를 잘 만들었어 ! 근데 니가 호출을 할 때 이상하게 사용한거야 ! 그러니까 니가 책임져 !

ex) 잘못된 값이 매개변수로 전달되서 오면, 이거 실행하는게 의미가 있어? 매개변수로 받은 값이 밑에서 계속 사용되는데 이거 맞아?

 

입니다.

그러니까, 에러가 발생하는 메서드, 생성자 에서 처리를 하지 않고, 호출하는 곳에서 처리를 하도록 하는거에요

예외를 던져 버리는 거죠 !!!!!!!

예외를 던지는건, 메서드 or 생성자 뒤에 throws Exception 을 붙여주면 됩니다.

 

예제를 보죠

이런 경우 index 에 배열의 크기보다 큰 값이 들어오면 참조범위를 넘어서게 되는 에러가 발생하게 됩니다.

 

에러가 발생할 경우 원래는 우리가 try catch 를 썼죠? 즉 메서드 내부에서 작성해 줬어야 했잔아요?

근데 throws Exception 을 쓰면 호출하는 곳에서 try catch 를 쓰라고 강제 하는 겁니다.

문법적으로 이상이 없는데, 이제는 이렇게 빨간줄 뜨는걸 확인 할 수 있습니다.

마우스를 올려보면?

이런 오류가 뜨는데 Surround with try/catch 를 눌러주세용

요렇게 자동 완성이 됩니다. catch 에는 어떻게 할 껀지 처리할 코드를 써주시고 ~

 

이렇게 하면, 메서드를 사용할 때 무조건 try catch를 써줘야 합니다. 예외 던지기 !

메서드 호출(사용)할 때, try catch 안 쓰면 빨간줄 떠서 사용 못해요 ~

 

하나 더 보고 갑시다

이번에는 throws Exception 이 아닌 throws ArithmeticException 이 왔죠?

이것도 똑같이 예외 던지기를 하는건데....

메서드를 호출(사용)할 때, 빨간줄이 안 뜹니다.

이렇게, 뒤에 에러 종류가 thorws 를 했을때, 문법적으로 빨간줄이 뜨는게 있고 아닌게 있대요

google 링 해서 찾아보라고 하셨는데, 못 찾겠더라구요 ... 뭐라구 검색해야 할까요? ㅎㅎㅎ

그래서.. 예외 던지기를 할 때는 무조건 throws Exception 으로 사용 합시다 ~

 

자 그러면, 예외 던지기를 응용 해볼건데요....

이렇게 사용을 하면, 생성자에서 에러가 나겠죠? main -> 생성자 -> bbb -> aaa

정확히는 aaa 에서 오류가 나는 거겠죠?

실행을 해보면, 이렇게 호출 하는것만 출력되고 프로그램이 종료가 되는 걸 알 수 있습니다.

그러면 이 문제를 throws 를 활용해서 풀어 보겠습니다.

메서드 aaa 에 try catch 를 써도 되지만...

이렇게 예외를 던져버려도 되죠?

그러면 , aaa 를 호출(사용)하는 곳에서 try catch를 강제하게 됩니다

그러면, bbb 에서 try를 쓰지말고, 또 던져버릴 수 있을까요?

네 가능합니다. 실제로는 aaa 에서 에러가 나지만, 예외던지기(throws) 를 해버리면 bbb 에서 에러가 나는거잔아요? 그러니까 bbb 를 또 던질 수 있습니다.

bbb 를 호출(사용) 하는 곳에서 try catch 를 써줘야 겠죠?

생성자에도 throws Exception 을 써버리면 ?

결국 생성자를 호출하는 곳 ( main ) 에서 처리 ( try catch ) 를 해주어야 합니다

즉. thrwos Exception 을 사용해서, 계속 에러를 던질 수(넘길 수) 있는 겁니다.

 

이렇게 예외 던지기 (넘기기) throws 에 대해 알아 보았습니다.

 

대표적으로 throws (예외 던지기) 처리 된 메서드는 이러한 것들이 있다고 합니다

 

고생하셨습니다

'JAVA 공부' 카테고리의 다른 글

Day19 - API - java.lang 패키지  (1) 2021.03.12
Day19 - 예외 만들기  (0) 2021.03.12
Day18 - 예외처리  (0) 2021.03.11
Day18 - 그동안 뭘 배웠는지 정리해봅시다  (0) 2021.03.11
Day18 - interface 02  (0) 2021.03.11