Adventure Time - Finn 3
본문 바로가기
JAVA/개념정리

예외처리

by hyun9_9 2023. 12. 11.

예외란? 

예외,에러,오류,이슈,문제,컴플레인,...
프로그램을 비정상적으로 종료되게하는 문제들
=>사용자가 원할때 종료하는 것이 바람직함
Exception
예외가 발생되면 캡쳐 =>원인파악=>해결책

 

 

예외처리를 왜해야하는가?


프로그램은 절대 비정상 종료되면 안됨
1) 예외가 발생되면 무시하고 다음 스텝으로 이동
2) 예외가 발생할수 있으니까, 제대로 사용해~ 하고 안내 <=대부분 사용 

 


try문
예외가 발생할것 같은 코드를 작성
catch
예외가 발생즉시 수행

 

 

 

[문제 1]
사용자가 1~10사이의 정수를 입력해야합니다. 정상입력해야 종료됩니다
정수입력 >> 정수
정수를 입력해주세요
1~10사이로 입력해주세요!
정수입력 >> 5
5를 입력했습니다!

 

 

한글코딩


1~10사이의 정수를 입력해야합니다. 정상입력해야 종료됩니다 
while
try
정수입력 >> 정수
catch
정수를 입력해주세요
1~10사이로 입력해주세요!
try
정수입력 >> 5
break
5를 입력했습니다!

public class Test02 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("1~10사이의 정수를 입력해야합니다. 정상입력해야 종료됩니다");
		
		while (true) {
			int input = 0;
			try {
				System.out.println("정수입력 >> ");
				input = sc.nextInt();
			} catch (InputMismatchException e) {
				sc.nextLine();//버퍼 공간에 있는 잘못 입력된 값을 제거하는 역할
				System.out.println("정수를 입력해주세요");
				
			}
			if (1 <= input && input <= 10) {
				System.out.println(input + "를 입력했습니다!");
				break;
			}else {
				System.out.println("1~10사이로 입력해주세요!!!");
			}
		}
		
	}
}

출력

1~10사이의 정수를 입력해야합니다. 정상입력해야 종료됩니다

정수입력 >> 정수

정수를 입력해주세요

1~10사이로 입력해주세요!!!

정수입력 >> 5

5를 입력했습니다!

 

 

 

[문제 2]
[10 1 2 0 -2] 배열리스트가 있습니다 //arraylist

사용자에게 정수를 입력 받습니다 ex) 1

   100/배열리스트 1번째정수 의 결과를 출력해주세요!~~
   100/10=10

   사용자에게 정수를 입력받습니다. ex) 3
   100/배열리스트 1번째정수 의 결과를 출력해주세요!~~
   100/2=50

 단, 100/0의 경우 0으로는 나눌수없습니다. 를 출력해주세요!~~

 

 

public class Test03 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		ArrayList<Integer> datas = new ArrayList<Integer>();
		datas.add(10);
		datas.add(1);
		datas.add(2);
		datas.add(0);
		datas.add(-2);
		int index;
		double result;
		while (true) {
			try {
				System.out.println("정수 입력");
				index = sc.nextInt();
				try {
					result = 100 / datas.get(index - 1);
					break;
				} catch (ArithmeticException e) {
					System.out.println(datas.get(index) + "으로는 나눌수없습니다.");
				} catch (Exception e) {
					System.out.println("해당 인덱스 요소는 없습니다");
				}
			} catch (InputMismatchException e) {
				System.out.println("정수를 입력해주세요");
				sc.nextLine();
			}
		}
		System.out.println("100/" + datas.get(index - 1) + "=" + result);
	}

}

정수 입력

정수

정수를 입력해주세요

정수 입력

6

해당 인덱스 요소는 없습니다

정수 입력

4

0으로는 나눌수없습니다.

정수 입력

1

100/10=10.0

 

 

 

'JAVA > 개념정리' 카테고리의 다른 글

MVC - var.2 , var.3  (0) 2023.12.12
개발 패턴 : MVC var.1  (0) 2023.12.11
private  (0) 2023.12.07
컬렉션 프레임 워크- 배열리스트(향상된 배열)  (0) 2023.12.07
프로그래밍 기초  (0) 2023.12.06