[JAVA]객체지향(14): 예외 떠넘기기

ho's·2022년 5월 1일
0

지난 시간 내용


예외 떠넘기기

리턴타입 메소드명(아규먼트 리스트) throws Exception 클래스명1, Exception클래스명2 ... { 
코드1
코드2
...
} 

코드에서 발생하는 오류를 divide메소드에서 처리하지 않고,
이를 호출하는 곳에서 떠넘길 수 있다.

divide 메소드 뒤에 throws를 써준다.

divide를 호출하는 클래스에서 예외 처리를 해준다.

RuntimeException과 Checked Exception

  • RuntimeException을 상속받고 있으면 모두 RuntimeException이다!

CheckedException

  • Exception을 상속받고 있는 IOException은 CheckedException이다.

RuntimeException 예제

실행시키면 실행시에 오류가나서 종료가 된다.

이런 Exception을 RuntimeException이라고 한다.

위의 사진을 보면 RuntimeException이 없다.
RuntimeException 이 없는것을 CheckedException 이라고 한다.

예외 처리를 해주자

try catch를 하기 싫으면, 떠넘겨도 좋다!

thorws를 이용해보자.

위 그림의 문제점은 책임을 JVM에 넘겨서 오류가 발생시 프로그램이 종료된다는 것이다.

정리

  • RuntimeException은 처리를 안해줘도 실행이 된다.
  • checkedException은 처리를 해주지 않으면 컴파일 자체가 오류가 발생한다.

Exception 클래스를 만든다면 어떤것을 만드는 것이 좋을까?

  • RuntimeException을 상속받고 있는 클래스를 만들어서 처리하는 것이 좋다.

다중 Exception 처리

위의 코드를 실행시키면, 어디서 오류가 발생할까?

  • array[0] = 4;
  • array[1] = 0;
    이므로, 0으로 나눌수 없다는 오류인 ArtithmeticException오류가 발생된다. 다음과 같은 결과가 나온다.

ArrayIndexOfBoundsException도 ArrayIndex의 범위에 관련된 오류가 발생하면 오류 메세지를 전달해 준다.

그 외의 오류는 Exception을 이용해 처리할 수 있다.
가급적이면 Exception종류에 따라 예외처리를 해주는 것이 좋다.

사용자 정의 Exception

profile
그래야만 한다

0개의 댓글