으나님의 잡다한 개발상식
(JAVA) 예외처리(try-catch) 본문
자바에는 예외라는 것이 있다.
2개의 공간을 가지는 배열을 만들었는데 3번째 값을 읽으라고 하던지,
int형을 입력받아야 하는데 String으로 입력되었다던지 등의 예외적인 상황으로 에러가 발생하곤 한다.
이런 경우 사용자에게 "잘못 입력하셨습니다. 다시 입력해주세요."라고 안내하고
프로그램을 계속 진행시킬 수는 없는 것일까?
이때 예외처리구문을 사용한다.
이런 경우는 보통 코드를 짜면서 예상할 수 있는 에러에 속하는데,
이런 에러들을 처리하는 방법인 예외처리 방법 중 try-catch 구문이 있다.
// 숫자이외의 값을 입력했을때 예외처리 후 메뉴선택화면으로 다시 돌아감.
try {
scan = new Scanner(System.in);
Choice = scan.nextInt();
} catch (java.util.InputMismatchException e) {
System.out.println("잘못입력했습니다.");
System.out.println("다시 입력해주세요");
continue;
}
catch부분 중괄호에 아무 문구도 쓰지 않는다면 오류가 발생하는 상황에도 아무 표시도 없이 프로그램이 정상적으로 돌아가서 후에 문제를 인식하지 못할 수도 있으니, 반드시 문구를 작성해주자. 완성본이 아닌 테스트를 수행하는 경우에는 catch부분 중괄호에 system.out.print("error : "+e)를 입력하여 어떤 부분에서 오류가 난 것인지 확인하는 것이 좋다.
try-catch문을 쓰면서 변수선언이 헷갈리게 될 수 있으니 주의하자. try블록 내에서 쓰인 변수는 catch블록 내에서는 사용할 수 없는 지역변수이기 때문이다. 따라서 try문에서도 catch문에서도 사용할 변수가 있다면 해당 변수를 try-catch문이 진행되기 전에 먼저 선언해주어야 한다.
try-catch문에서 추가로 finally문을 추가할 수 있다. finally는 예외가 발생하건 발생하지 않건 무조건 실행되는 부분이라고 생각하면 된다.
// 숫자이외의 값을 입력했을때 예외처리 후 메뉴선택화면으로 다시 돌아감.
// "감사합니다" 문구가 언제나 나오게끔 설정함.
try {
scan = new Scanner(System.in);
Choice = scan.nextInt();
} catch (java.util.InputMismatchException e) {
System.out.println("잘못입력했습니다.");
System.out.println("다시 입력해주세요");
}finally{
system.out.println("감사합니다.");
}
'JAVA' 카테고리의 다른 글
(JAVA) this와 super, this()와 super() (0) | 2019.11.24 |
---|---|
(JAVA) 예외 정리 (0) | 2019.11.23 |
(JAVA) break와 continue 차이 (0) | 2019.11.23 |
(JAVA) 변수 (0) | 2019.11.23 |
(JAVA) 객체란? (0) | 2019.11.23 |