728x90
반응형
try catch 구문을 살펴보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import java.util.Scanner; public class Exception01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("숫자 입력 : "); int a = sc.nextInt(); System.out.print("숫자 입력 : "); int b = sc.nextInt(); System.out.println(" a / b = " + (a / b )); } } | cs |
위 코드를 Scanner로 입력받아 실행시키면,
이처럼 잘 작동하는 것을 볼 수 있지만, b에 0을 넣어보면 어떻게 될까?
이처럼 에러가 난다. 사실 이건 에러가 뜬게 아니라 첫줄 코드를 자세히 살펴보면 Exception 이라는 예외처리라는 의미이다.
분자를 분모 0으로 나눌 수 없기 때문이다.
첫번째 줄 오른쪽을 보면 / by zero를 볼 수 있다. 왜 예외가 발생했는지 대략적으로 볼 수 있다.
java.lang.ArithmeticException이 중간에 떠있다.
int로 받았는데 문자열을 넣는다면, ArithmeticException 자리에 InputMismatchException 이온다.
그렇다면 이처럼 예외처리 코드가 보이지 않게 try ~ catch 구문을 잘 이용해보자.
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 | import java.util.Scanner; public class Exception02 { public static void main(String[] args) { System.out.println("프로그램 시작~"); Scanner sc = new Scanner(System.in); // 예외를 처리하는 기본 구문. try{ // 예외가 발생할 소지가 있는 코드를 작성. System.out.println("숫자 입력 : "); int a = sc.nextInt(); System.out.println("숫자 입력 : "); int b = sc.nextInt(); System.out.println(" a / b = " + (a / b )); } catch (Exception e){ //예외가 발생했을 때 처리 코드 작성 System.out.println("예외가 발생했습니다."); System.out.println(e.getMessage()); // e.getMesaage()를 하면 왜 예외가 발생했는지 이유가 뜬다. // 즉, 예외 발생 이유를 문자열로 리턴. e.printStackTrace(); // 예외 발생 위치, 이유를 출력 } System.out.println("프로그램 종료."); } } | cs |
아까와 똑같이 입력해보았다.
정상적으로 작동하며 catch를 건너뛰고 마지막줄에 있는 프로그램종료 문구가 출력됐다.
그래서 아까와 똑같이 b 자리에 0을 넣었다.
이처럼 예외가 발생했습니다라는 catch문이 출력되고, 예외가 발생했다고 떴다.
마지막에 있는 e.getMessage() 를 넣어주면 / by zero 와 같이 이유가 뜬다.
e.printStackTrace(); 는 위의 빨간 줄과 같이 이유가 뜨는 기능이다.
728x90
반응형
'✨ Java > 예외 처리(Exception)' 카테고리의 다른 글
자바(JAVA) - Exception 다양한 예외 종류 (0) | 2023.07.18 |
---|
댓글