<여러가지 예외들>
A. java.lang 패키지
1. NullPointExcention: 존재하지 않는 레퍼런스를 참조할 때
2. ArrayIndexOutOfBoundsException: 배열의 범위를 벗어난 index를 접근할 때
3. NumberFormatException: 문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환할 때
4. ClassCastException: 변환할 수 없는 타입으로 객체를 반환할 때
5. ArithmeticException: 정수를 0으로 나눌 때
6. OutOfMemoryError: 메모리가 부족할 때
7. IllegalArgumentException: 잘못된 인자를 전달할 때B. java.io 패키지
8. IOException: 입출력 동작 실패 또는 인터럽트 시C. java.util 패키지
9. InputMismatchException: Scanner 클래스의 nextInt()를 호출하여 정수로 입력받고자 하였지만, 사용자가 'a' 등과 같이 문자를 입력한 경우
그래서 Try! Catch! Finally!
형식: try{ //에러가 발생할 수 있는 코드 throw new Exception(); //강제 에러 출력 }catch (Exception e){ //에러시 수행 e.printStackTrace(); //오류 출력(방법은 여러가지) throw e; //최상위 클래스가 아니라면 무조건 던져주자 }finally{ //무조건 수행 }
[IllegalArgumentException 사용예시]
public void setAge(int age) {
if (age < 0 || age > 120) {
throw new IllegalArgumentException("나이는 0에서 120 사이여야 합니다.");
}
this.age = age;
}
[InputMismatchException 사용예시]
import java.util.InputMismatchException;
import java.util.Scanner;
public class InputMismatchExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num;
try {
System.out.print("정수를 입력하세요: ");
num = scanner.nextInt();
System.out.println("입력된 정수는 " + num + "입니다.");
} catch (InputMismatchException e) {
System.out.println("올바른 정수를 입력해주세요.");
}
}
}
[루프에 넣는 예시]
import java.util.*;
public class WhileSample {
public static void main(String[] args){
int count=0;
int sum = 0;
Scanner scan = new Scanner(System.in);
System.out.println("정수를 입력하고 마지막에 -1을 입력하세요.");
while(true) {
try {
int n = scan.nextInt();
while (n != -1) {
sum += n;
count++;
n = scan.nextInt();
}
if (count == 0) {
System.out.println("입력된 수가 없습니다.");
break;
}
else {
System.out.print("정수의 갯수는 " + count + "개이며 ");
System.out.println("평균은 " + (double) sum / count + "입니다.");
break;
}
} catch (InputMismatchException e) {
System.out.println("정수만 입력하세요!");
scan.next(); // 입력버퍼 지워주기
}
}
}
}