Day19 - 예외 만들기

2021. 3. 12. 17:08JAVA 공부

저희는 지금 .... 예외 처리 -> 예외 던지기 를 배웠습니다.

그리고 이러한 것들을 배우기 위해서, 에러가 나는 코드를 작성을 했었죠?

 

"야 그러면 에러도 내가 직접 만들어서, 내가 설계한 대로 매개변수를 전달하지 않거나, 입력을 잘못하면 에러를 만들고 싶은데? 예를 들면.... int 형에다가 음수를 집어넣으면 양수만 넣도록 말이야"

 

이렇게 생각 할 수 있겠죠?

 

예외 만들기

그래서 이번에는 에러를 직접 만들어 볼껍니다.

 

에러를 만드는건.....

throw new Exception( "문자열" );

을 해주면 됩니다

 

문자열은 넣어줘도 되고, 안 넣어줘도 됩니다.

예제를 봅시다

이제 이 정도 코드는 딱 보면 알겠죠?

1부터 매개변수의 값까지 더해서 리턴해주는 메서드 입니다.

 

여기서 만약에 음수가 들어온다면?

이렇게 됩니다. 음수가 들어오게 되면 , 처음부터 for문이 false 가 되기 때문이죠?

그래서 음수가 들어오면 에러를 만들어 줄 거에요

※if 문이랑 가장 많이 쓰입니다

아까와 똑같은 코드에 , a가 0보다 작을때, throw new Exception 만 새로 생겼죠?

에러를 만들어 주고, (에러가 생겼으니 try catch 를 만들어 줘야 합니다)

에러를 throws Exception 으로 , 사용하는 곳에서 try catch 를 강제 해 줬습니다

다시 정리를 해보자면...

예외를 만든다 -> throw new Exception

예외를 던진다 -> thorws Excepion

예외를 처리한다 -> try catch finally

 

예외를 만들면, 예외를 처리해줘야 하는데, 예외를 던지면 호출하는곳에서 try catch

예외를 던지지 않으면 예외를 만든 곳에서 try catch

 

그리고 예외를 만드는 것도 결국 생성자 에요 ( 생성자랑 똑같이 생겼죠? )

에러를 어떻게 출력할지 문자열로 넘겨 주는건데요

사용하는거는... getMessage() 를 해주면 됩니다.

그리고, printStackTrace() 가 있습니다

getMessage() 는 예외를 만들 때 넘겨주었던 문자열을 반환 가져와서 반환 해줍니다.

printStackTeace() 는 예외를 만들 때 넘겨주었던 문자열을 출력하면서, 같이 에러가 어디서 발견 되었는지 경로를 출력해 줍니다.

 

이번에는 Exception 클래스를 상속 받는 MyException 클래스를 만들어 볼 겁니다

상속을 받는 것 이기 때문에, MyException 은 Exception의 모든 기능을 사용할 수 있게 되겠죠?

즉 ... 에러를 발생시키는 것도, 에러를 처리하는 것도 ... 기능을 오버라이딩 하거나, 새로운 기능을 만들거나 하는 것도 할 수 있겠죠?

 

Exception 을 상속받을 때는, 이렇게 생성자를 2개 만들어 줍니다.

기본 생성자 , 메시지를 받을 생성자.

안에서는 super 를 통해서 각각 부모 클래스의 생성자를 호출해주면 되겠습니다.

 

이렇게 만든 MyException 은 Exception 이랑 똑같이 사용할 수 있습니다.

보면, 그냥 Exception 자리에 MyException 이 들어갔을 뿐입니다.

그리고 이제 MyException 에 메서드를 하나 만들어주면 ?

이런 식으로 쓸 수 있다는 거....

 

에러의 종류가 많이 있으니까 ... Exception 뿐만 아니라, 하위 클래스 들을 상속받아서 만드는 것도 가능합니다

 

 

이렇게 예외 만들기 throw new 에 대해 알아 보았습니다

 

고생하셨습니다

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

Day20 - String  (0) 2021.03.15
Day19 - API - java.lang 패키지  (1) 2021.03.12
Day19 - 예외 던지기 throws  (0) 2021.03.12
Day18 - 예외처리  (0) 2021.03.11
Day18 - 그동안 뭘 배웠는지 정리해봅시다  (0) 2021.03.11