package day0221;
import java.util.Scanner;
// 구구단 출력 클래스
public class MultiTable {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("출력할 단을 입력하세요 (2~9): ");
int dan = scanner.nextInt();
scanner.close(); // Scanner 닫기
try {
printDan(dan);
} catch (NumException e) {
System.out.println("예외 발생: " + e.getMessage());
}
}
public static void printDan(int dan) throws NumException {
if (dan < 2 || dan > 9) {
throw new NumException("단은 2와 9 사이여야 합니다.");
}
for (int i = 1; i < 10; i++) {
System.out.println(dan + " x " + i + " = " + (dan * i));
}
}
}
콘솔 출력
출력할 단을 입력하세요 (2~9):
예외인 값을 입력했을 때
출력할 단을 입력하세요 (2~9): 1
예외 발생: 단은 2와 9 사이여야 합니다.
범위에 해당하는 값을 입력했을 때
출력할 단을 입력하세요 (2~9): 3
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
package day0221;
/**
* main method 에서 arguments 두개의 수를 입력 받아, 나누는 일
*/
public class TestRuntimeException {
public static void main(String[] args) {
try {
int num=Integer.parseInt(args[0]);
int num2=Integer.parseInt(args[1]);
// args[0]/args[1]; //유효하지 않은 연산
int result=num/num2;
System.out.println(num+ " / " + num2 + " = " + result);
}catch(ArrayIndexOutOfBoundsException aioobe) {
System.out.println("ㅈㅅ요");
System.out.println("실행법 ) java TestRuntimeException 값 값");
System.err.println("간단한 메시지 : "+ aioobe.getMessage());
System.err.println("예외처리객체와 간단한 메시지 " + aioobe);
aioobe.printStackTrace(); //예외처리와 관계있는 모든 클래스를 콘솔에 출력
}catch(NumberFormatException nfe) {
System.out.println("ㅋㅋ");
System.out.println("숫자 넣으라고 java.lang.NumberFormatException");
}catch(ArithmeticException ae) {
System.out.println("ㅉㅉ");
System.out.println("0으로 나눌 수 없음 java.lang.ArithmeticException");
}catch(Exception e) {
System.out.println("갱생가능");
// throwable => 갱생불가
}finally {
System.out.println("ㅅㄱ링");
}//finally
}//main
}//class
argument에 값을 넣지 않은
콘솔 출력 > 예외 처리
ㅈㅅ요
실행법 ) java TestRuntimeException 값 값
간단한 메시지 : Index 0 out of bounds for length 0
예외처리객체와 간단한 메시지 java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at day0221.TestRuntimeException.main(TestRuntimeException.java:11)
ㅅㄱ링
argument에 값을 입력

콘솔 출력
10 / 20 = 0
ㅅㄱ링
package day0221;
import java.util.Random;
public class TestUserDefineException {
/**
* 사용자 정의 예외 발생
* @return
* @throws TabaccoException
*/
public String taeil()throws TabaccoException {
String msg="";
String[] grade= {"대학생","유사성인","촉법소년","잼민이"};
int random=new Random().nextInt(grade.length);
String selectGrade=grade[random];
if(random == 3) {
// throw new TabaccoException(selectGrade+ "님 지나친 흡연은 건강에 해로워요");
throw new TabaccoException(); //기본 생성자
}//end if
msg=selectGrade+"이 흡연증 ('' )( '') 모른 척 지나간다. ";
return msg;
}//taeil
public void useTaeil() {
try {
System.out.println(taeil());
//사용자 정의 예외 처리클래스 사용하면 가독성 향상
} catch (TabaccoException e) {
e.printStackTrace();
}//end catch
}//useTaeil
public static void main(String[] args) {
TestUserDefineException tude= new TestUserDefineException();
tude.useTaeil();
}//main
}//class
대학생,유사성인,촉법소년,잼민이 중 랜덤한 값으로 실행됨
콘솔 출력
촉법소년이 흡연증 ('' )( '') 모른 척 지나간다.
'Java' 카테고리의 다른 글
| [Java] 직렬화 Serializable, Stream - Data,File,Object (0) | 2025.04.05 |
|---|---|
| [Java] 파일기록&복사 - FileOutputStream&Writer,JFileChooser (0) | 2025.04.02 |
| [Java]Dialog,JOptionPane,actionFerformed,UseCombobox&List&Icon&Table (0) | 2025.03.24 |
| [Java] Layout - Grid,Flow,Multi (0) | 2025.03.20 |
| [Java] ArrayList,Scanner (0) | 2025.03.19 |