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("해당 번호의 카드는 없습니다."); 각 상황에 맞게 써주었다. |