Try catch (예외처리)
자바에서 프로그램이 실행되는 도중 예외(에러)가 발생하면 그 시점에서 프로그램이 강제적으로 종료된다. 원랴는 프로그램을 디버깅해서 오류를 수정한 뒤 실행하는것이 원칙이지만, 때로는 예상할 수 있는 가벼운 오류가 있거나, 예외가 발생했을때도 프로그램종료를 하지않고 작업을 진행해야 할 때가 있다. <= failsafe 기법이라고 한다.
예외처리를 통해 프로그램의 비정상적인 종료를 줄이고 정상적으로 프로그램이 진행될 수 있도록 할 수 있다.
tip. 미리 의식하지말고 먼저 프로그램을 작성한 뒤 오류가 있을곳으로 예상되는 부분만 try ~ catch구문으로 감싸주면 된다.
package java11;
public class Test03 {
public static void main(String[] args) {
int n = 0;
int result = 0;
try {
result = 10/n; // ERROR : / by zero
} catch (Exception e) { //다수의 오류를 ,로 구분해서 늘릴 수 있다.
e.printStackTrace();
System.out.println("ERROR OCCURRED");
}
System.out.println(result); //try문장이 오류이므로 아예무시되어 0출력
}
}

package java11;
public class Test04 {
public static void main(String[] args) {
int[] var = {10, 20, 30};
try {
for (int i=0; i<=var.length; i++) { // Index 3 out of bounds for length 3
System.out.println("var [" +i+ "] = " +var[i]);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("배열 범위 초과 오류 발생");
}
System.out.println("프로그램 끝");
}
}
package java11;
import java.util.Scanner;
public class Q1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
System.out.println("정수를 입력해주세요");
try {
int num = scan.nextInt();
System.out.println(num);
} catch (Exception e) {
// e.printStackTrace(); //에러코드를 출력함
System.out.println("정수가 아닌값이 입력되었습니다.");
}
System.out.println("프로그램 끝");
}
}
package java11;
import java.util.Scanner;
class GenEx<T> {
T value;
public T getValue() {
return value;
}
public void setValue (T value) {
this.value = value;
}
}
public class Q2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
System.out.println("정수를 입력해주세요");
try {
int num = scan.nextInt();
System.out.println(num+ "은 정수입니다.");
} catch (Exception e) {
try {
System.out.println((Double)scan.nextDouble()+ "은 실수입니다.");
} catch (Exception e2) {
System.out.println((String)scan.next()+ "은 문자입니다.");
}
}
System.out.println("프로그램 끝");
}
}
'코딩 > JAVA' 카테고리의 다른 글
JAVA 28-1. 쓰레드2 (0) | 2022.08.08 |
---|---|
JAVA 28. 쓰레드 (0) | 2022.08.08 |
JAVA 26. 내부 클래스 (0) | 2022.07.31 |
JAVA 25. ENUM (0) | 2022.07.31 |
JAVA 24. 인터페이스 (0) | 2022.07.31 |