본문 바로가기
(혼) (공) (자)

try-catch

by 만석이 2024. 1. 22.
1.예외를 처리하는 가장 기본 문법은 try-catch구문이다.
2.예외가 발생할 가능성이 있는 코드는 try{}영역 안에 작성을 하고 catch(){} 메서드는 시스템으로부터 넘어오는 예외 클래스를 받아서 처리한다.

 

 

 

예시를 보자

public class Ex1_try_catch {
public static void main(String[] args) {
int result =0;

try {
result = 10/0;
} catch (Exception e) {
//e.printStackTrace(); //어떤 예외가 발생했는지 오류문구를 알려준다.
System.out.println("0으로 나눌수없습니다.");
}
}
}
10을 0으로 나누면 오류가 발생하는데 이것을 try문에 작성해주었다. 

그후 catch문을 사용해서 10/0을 시도하게 되면
어떻게 처리할지 정해준다.

옆 코드에서는 출력문으로 사용자에게 알려주었다.

 

Exception e 의 의미는 어떤 예외가 발생하던간에 catch문에서 작성한 명령으로 오류를 처리한다는 뜻이다.

 

 

두 번째 예시

package Ex4_tryCach;


import java.util.Scanner;


public class Ex2_try_catch {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

try {
System.out.println("정수를 입력하세요");
int scroe = sc.nextInt(); // 문자 입력시 예외발생

if(scroe >= 65) {
System.out.println("합격입니다.");
}else {
System.out.println("불합격입니다.");
}
} catch (Exception e) {
//InputMismatchException발생
//e.printStackTrace();

System.out.println("숫자만 입력하세요");
}

}
}
try문에서 정수를 입력받는다. 하지만 문자 입력시 오류가 
발생하게되는데, 출력으로 처리하게된다.

e.printStackTrace();을 사용하게 되면 어떤 오류가 발생했는지 
알려준다.


 

세 번째 예시

public class ex3_try_catch {

    public static void main(String[] args) {
        System.out.println("정수 입력: ");
        Scanner scan = new Scanner(System.in);
        String str = " ";

        try {
            str = scan.next();
            int num = Integer.parseInt(str);
            System.out.println("결과: " + num);

        } catch (NumberFormatException e) {
            System.out.println(str + "은(는) 정수가 아닙니다.");
        }
    }
}
try문을 사용해서 정수가 아닌 문자를 입력했을때 오류 가능성을 입력한다. str을 정수로 변환시켜주고 그 값을 num에 넣어준다. 

 

 

네 번째 예시

public class ex4_try_catch {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

try {
int[] casrds = {4,5,1,2,7,8};
System.out.println("몇번째 카드를 뽑으시겠습니까?");

int cardIndex = scan.nextInt(); //->InputMissmatchException
System.out.println("뽑은 카드 번호는:"+casrds[cardIndex]); //->ArrayIndexOutOfBoundsException
}catch (InputMismatchException e) {
System.out.println("정수만 입력하세요");
}catch (ArrayIndexOutOfBoundsException e) {
System.out.println("해당 번호의 카드는 없습니다.");
}
}

}
사용자가 입력한 정수값이 cardIndex 에 들어간다.

1.사용자가 알맞은 정수를 입력했을때 
System.out.println("뽑은 카드 번호는:"+casrds[cardIndex]);

2.사용자가 정수가 아닌 문자값을 입력할때 
catch (InputMismatchException e) {
System.out.println("정수만 입력하세요");

3.사용자가 알맞지 않은 인덱스 값을 입력했을때
catch (ArrayIndexOutOfBoundsException e) {
System.out.println("해당 번호의 카드는 없습니다.");

각 상황에 맞게 써주었다.

 

'(혼) (공) (자)' 카테고리의 다른 글

throws  (0) 2024.01.23
finally  (1) 2024.01.23
예외종류  (0) 2024.01.22
예외처리  (0) 2024.01.22
익명클래스  (1) 2024.01.22