Try! Catch! Finally!

niraaah·2023년 4월 9일
2

혼자하는 스터디

목록 보기
4/25
post-thumbnail

<여러가지 예외들>
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();    // 입력버퍼 지워주기
            }
        }
    }
}

출처: 코딩팩토리

profile
코딩천재

0개의 댓글