728x90
# Try - Catch(예외처리)
자바에서 프로그램이 실행되는 도중에 예외(에러)가 발생하면 그 시점에서 프로그램이 강제로 종료된다. 원래는 프로그램을 디버깅(Debugging)해서 오류를 수정한 뒤 실행하는 것이 원칙이지만 때로는 예상할 수 있는 가벼운 오류(숫자를 0으로 나눔 : 불능, 0을 0으로 나눔 : 부정) 가 있거나, 예외가 발생했을 때도 프로그램이 종료되지 않고 그 이후의 프로세스를 진행시키는 것이 더 좋을 수도 있다. 일종의 FailSafe 기법이라고 한다.
예외 처리를 통해 프로그램의 비정상적인 종료를 줄이고 정상적으로 프로그램이 계속 진행될 수 있도록 할 수 있다.
catch 구문
catch (Exception e) {
e.printStackTrace( ), e.~
} ;
예제1)
1. 일단 코드를 작성한다.
package Java11;
public class Test02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 0;
int result = 0;
result = 10/n; // 오류발생
System.out.println(result);
}
}
2. 오류부분을 try ~ catch 문장으로 감싸준다.
(미리 try ~ catch 문을 의식하지 말고 일반적으로 프로그램을 작성한 뒤 오류가 있을 곳으로 예상되는 부분만 try ~ catch 으로 감싸기)
package Java11;
public class Test02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 0;
int result = 0;
try {
result = 10/n; // 오류발생
} catch (Exception e) { // 이 부분은 여러 개의 오류를 ,로 구분해서 뿌릴 수 있다.
e.printStackTrace();
System.out.println("Error occurred");
}
System.out.println(result);
}
}
// 오류가 있어도 try ~ catch 문으로 처리한 뒤 나머지를 실행해서 결과 0을 보임
추가 예제
더보기
예제 1)
package Java11;
public class Test03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] var = {10,20,30};
for (int i=0; i<=var.length; i++) {
System.out.println("var[" + i + "] = " + var[i]);
}
System.out.println("프로그램 끝");
}
}
package Java11;
public class Test03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] var = {10,20,30};
try {
for (int i=0; i<=var.length; i++) {
System.out.println("var[" + i + "] = " + var[i]);
}
}
catch (Exception e) {
e.printStackTrace();
System.out.println("배열 범위 초과 오류");
}
System.out.println("프로그램 끝");
}
}
Q1. Scanner 객체를 통해서 정수를 입력받는다. 정수이면 그대로 출력하고 정수가 아니면 "정수만 입력할 수 있습니다" 라는 오류 메세지가 출력되게 하세요 .
package Java11;
import java.util.Scanner;
public class Q1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("정수를 입력하세요");
Scanner scan = new Scanner(System.in);
try {
int i = scan.nextInt();
scan.close();
System.out.println("입력하신 숫자는 : " + i);
}
catch (Exception e) {
e.printStackTrace();
System.out.println("정수만 입력하라구요");
}
}
}
Q2. Scanner 객체를 통해서 정수를 입력받는데 정수가 입력되었는지 판단해서 100을 입력해서 정수면 '100은 정수입니다' 라고 출력해주고, 13.2를 입력하면 '13.2는 정수가 아닙니다' 를 출력하게 하시오 .
package Java11;
import java.util.Scanner;
public class Q2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("정수를 입력하세요");
Scanner scan = new Scanner(System.in);
String str="";
try {
str= scan.next();
System.out.println("결과 : " + Integer.parseInt(str));
}
catch (Exception e) {
//e.printStackTrace();
System.out.println(str + "은(는) 정수가 아닙니다.");
scan.close();
}
}
}
'일단 해보는 코딩 > Java' 카테고리의 다른 글
[Java] 컬렉션 프레임윅(Collections Framework) - Map (0) | 2022.08.03 |
---|---|
[Java] Thread 종류와 Thread 동기화 하는방법 (0) | 2022.08.01 |
[Java] 인터페이스(Interface), 내부클래스의 종류, 접근제한자 (0) | 2022.07.29 |
[Java] 추상 메서드(abstract method) (0) | 2022.07.28 |
[Java] 제네릭(Generic) 사용법 (0) | 2022.07.28 |