public class Calc {
// 예외 호출지역 부분으로 전달.
// 예외 처리를 지정된 지역으로 전달해야 작동하는 라이브러리들도 있기 때문에 사용.
public static int div(int a, int b) throws Exception{
return a/b;
}
}
import java.util.Scanner;
/*
* 예외 ( exception )
* → 잘못된 코드 또는 사용자의 잘못된 조작으로 인해 발생하는 프로그램 오류.
*
* 예외처리
* → 프로그램에서 오류가 발생했을 때, 문제 내용을 처리.
* Ex) try {
*
* 문제가 발생할 수 있는 지역.
*
* } catch ( 예외 타입 ) {
* 예외처리 지역
* > catch 의 예외 타입으로 기본자료형 사용불가.
* } finally {
* 예외처리와 상관없이 무조건 실행. (사용 O,X)
* }
*/
public class Ex01Exception {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int candy = 0;
int people = 0;
try {
System.out.print("사탕 수 입력 > ");
candy = sc.nextInt();
System.out.print("사람 수 입력 > ");
people = sc.nextInt();
int div = candy / people;
int mod = candy % people;
System.out.println("한 사람당 사탕 수 : "+ div);
System.out.println("남은 사탕 수 : " + mod);
} catch(Exception e) {
//System.out.println("0으로 나누기 불가능 ");
//e.printStackTrace(); //→ error 코드 자세히
//System.out.println(e.toString()); //→ error 코드
System.err.println(e.getMessage()); // → error 코드 더 간단한 내용
} finally {
System.out.println("- 계산 종료 -");
}
}
}
public class Ex02Exception {
public static void main(String[] args) {
String[] sa = new String[] {"1","2","3"};
int[] ia = new int[sa.length];
try {
for(int i=0;i<4;i++) {
ia[i] = Integer.parseInt(sa[i]);
System.out.print(ia[i] + " ");
}
System.out.println();
} catch(NumberFormatException e) {
e.printStackTrace();
System.out.println("- NumberFormatException -");
} catch(ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
System.out.println("- ArrayIndexOutOfBoundsException -");
} catch(Exception e) {
e.printStackTrace();
System.out.println("- Exception e -");
}
}
}
import java.util.Scanner;
public class Ex03Exception {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int candy = 0;
int people = 0;
try {
System.out.print("사탕 수 입력 > ");
candy = sc.nextInt();
System.out.print("사람 수 입력 > ");
people = sc.nextInt();
if(people < 1)
throw new Exception("1 미만의 값 사용불가..\\n");
int div = candy / people;
int mod = candy % people;
System.out.println("한 사람당 사탕 수 : "+ div);
System.out.println("남은 사탕 수 : " + mod);
} catch(Exception e) {
//System.out.println("0으로 나누기 불가능 ");
//e.printStackTrace(); //→ error 코드 자세히
//System.out.println(e.toString()); //→ error 코드
System.err.println(e.getMessage()); // → error 코드 더 간단한 내용
} finally {
System.out.println("- 계산 종료 -");
}
}
}
public class Ex04Exception {
public static void main(String[] args) {
try {
int res = Calc.div(10, 0);
System.out.println("res : " + res);
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.util.Scanner;
public class QuizException {
public static void main(String[] args) {
// 사용자에게 ID를 입력받습니다.
// 정상이면 사용 가능하고, 문제가 있으면 재입력 받아서 합니다.
// → ID 는 2~10 글자 사이만 가능.
// ID 에 'admin' 단어가 들어가 있으면 입력불가.
Scanner sc = new Scanner(System.in);
while(true) {
try {
System.out.print(" ID 입력 > ");
String id = sc.next();
if(id.length()<2 | id.length()>10) {
throw new Exception("ID는 2~10글자 사이만 가능.");
} else if(id.contains("admin")) {
throw new Exception("ID에 'admin' 단어가 들어가 있으면 안됩니다.");
} else {
System.out.println("ID : " + id);
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
→