1) Exception
프로그램실행중 예기치 못한 사건을 예외라고 한다. 예외 상황을 미리 예측하고 처리할 수 있는데, 이렇게 하는 것을 예외 처리라고 한다.
- 위 코드에서 j를 0으로 바꾸면 Excption 발생
- j를 0으로 바꾸면 ArithmeticException이 발생하면서 프로그램이 종료된다.
- Java는 정수를 정수로 나눌때 0으로 나누면 안된다.0으로 나누면 오류가 발생하는 것입니다.
- 예외 처리
- 프로그래머는 j라는 변수에 0이 들어올지도 모르는 예외 상황을 미리 예측하고 처리할 수 있다.
- 예외처리하는 문법
- 오류가 발생할 예상 부분을 try라는 블록으로 감싼 후, 발생할 오류와 관련된 Exception을 catch라는 블록에서 처리한다.
- 오류가 발생했든 안했든 무조건 실행되는 finally라는 블록을 가질 수 있다.
- finally블록은 생략가능하다.
- 실행결과
0으로 나눌 수 없습니다. : java.lang.ArithmeticException: / by zero
오류가 발생하든 안하든 무조건 실행되는 블록입니다. - Exception 처리하지 않았을때는 프로그램이 강제 종료되었는데 catch라는 블록으로 Exception을 처리하니 강제종료되지 않고 잘 실행되는 것을 알 수 있다.
- try블록에서 여러종류의 Exception이 발생한다면 catch라는 블록을 여러개 둘 수 있다.
- Exception클래스들은 모두 Exception클래스를 상속받으므로, 예외클래스에 Exception을 두게 되면 어떤 오류가 발생하든지 간에 하나의 catch블록에서 모든 오류를 처리할 수 있다.
2) throws
throws는 예외가 발생했을때 예외를 호출한 쪽에서 처리하도록 던져준다.
정수를 매개변수로 2개를 받아들인 후 나눗셈을 한 후 그 결과를 반환하는 divide메소드
main메소드에서는 divde메소드를 호출
다음과 같이 divide메소드를 수정
메소드 선언 뒤에 throws ArithmeticException 이 적혀있는 것을 알 수 있습니다. 이렇게 적어놓으면 divide메소드는 ArithmeticException이 발생하니 divide메소드를 호출하는 쪽에서 오류를 처리하라는 뜻입니다.
'JAVA' 카테고리의 다른 글
24. java.lang 패키지/오토박싱 (0) | 2021.03.29 |
---|---|
23. 사용자 정의 Exception (0) | 2021.03.29 |
21. 인터페이스 (0) | 2021.03.29 |
20. 클래스 형변환 (0) | 2021.03.29 |
19. 오버라이딩 (0) | 2021.03.29 |