문제 : 정수를 입력받아 입력된 수가 0이나 양수이면 그 수를 그대로 출력하고,음수이면 음수예외인 MinusException을 발생시켜 '양수를 입력하시오!'라고 예외처리하고,
입력데이터가 없으면 입력데이터가 없는 예외인 EmptyData를 발생시켜 '데이터가 입력되지 않았어요!'라고 예외처리하는 예제를 작성해보자.
+) 입력된 값이 숫자가 아니면 예외를 발생시키고 예외처리하는 부분을 추가 처리 해보자
수정 전 코드
package p1;
class MinusException extends Exception {}
class EmptyData extends Exception {}
public class p1 {
public static void main(String[] args) {
int num=Integer.parseInt(args[0]); //args[0]번을 정수값으로 변환한다
try {
if(num<0) {
throw new MinusException();
}
else if(num==0) {
throw new EmptyData();
}
System.out.println("읽어들인 숫자는:"+num);
}
catch(MinusException m) {
System.out.println("양수를 입력하시오!");
} catch(EmptyData e) {
System.out.println("데이터가 입력되지 않았어요!");
} catch(NumberFormatException n) {
System.out.println("숫자를 입력하세요");
}
}
}
수정 전 놓쳤던 점
1. 먼저 num을 선언해놓았었다. 근데 num값에 데이터가 없는 경우는 어떻게 처리해야 하는거지?하고 고민
수정한 코드
package p1;
class MinusException extends Exception {}
class EmptyData extends Exception {}
public class p1 {
public static void main(String[] args) {
try {
int num;
if(args.length==0)
throw new EmptyData();
num = Integer.parseInt(args[0]);
if(num<0) throw new MinusException();
System.out.println("읽어들인 숫자는"+num);
} catch(EmptyData e) {
System.out.println("데이터를 입력하시오 !");
} catch(MinusException m) {
System.out.println("양수를 입력하시오!");
} catch(NumberFormatException n) {
System.out.println("숫자를 입력하시오");
}
}
}