자바는 객체지향 언어이므로 프로그램에서 발생하는 예외들은 클래스의 형태로 제공된다.
다음은 예외처리에 대한 클래스 관계도이다.
최상위의 Throwable을 상속받은 에러와 예외가 있다. 에러는 시스템상의 심각한 수준의 오류이기 때문에 수습될 수 없는 반면에, 예외는 개발자가 로직을 추가하여 처리할 수 있다.
try - catch 구문
예외를 처리하는 가장 기본 문법은 try-catch 문이다.
아래는 try - catch 기본 구조이다.
try {
// 예외가 발생할 가능성이 있는 코드
} catch (예외클래스명 e) {
// 예외 처리 코드
}
아래는 try - catch 구문 예시이다.
public class Test02 {
public static Scanner sc=new Scanner(System.in);
public static int makeNum(int[] datas) {
int num;
while(true) {
try {
System.out.print("정수 1 >> ");
num=sc.nextInt();
}
catch(InputMismatchException e) { // 예시 - 문자열을 입력한 경우
sc.nextLine();
System.out.println("다시 입력해주세요!");
continue;
}
break;
}
try {
num=datas[num];
}
catch(ArrayIndexOutOfBoundsException e) { // 예시 - 배열에서 없는 인덱스번호를 입력한 경우
System.out.print("없는 인덱스 번호를 입력해서 ");
System.out.println("[0]의 값으로 설정했습니다.");
num=datas[0];
}
return num;
}
public static void main(String[] args) {
int[] datas = {10,0,-1,2,3};
int num1=makeNum(datas);
int num2=makeNum(datas);
try {
int res=num1/num2;
System.out.println(num1+" / "+num2+" = "+res);
}
catch(ArithmeticException e) { // 예시 - 0으로 나눈 경우
System.out.println("0으로는 나누기를 수행할 수 없습니다.");
}
}
}
'JAVA' 카테고리의 다른 글
[JAVA] 파일 입출력 예제 (0) | 2024.07.25 |
---|---|
[JAVA] 스레드 Thread (1) | 2024.07.24 |
[JAVA] 예제 - 응집도와 결합도를 고려해 학생부 프로그램 만들기 (0) | 2024.07.18 |
[JAVA] 예제 - ArrayList를 이용하여 학생부 프로그램 만들기 (0) | 2024.07.15 |
[JAVA] ArrayList, Map (0) | 2024.07.15 |