Contents
1. ArithmeticException (0으로 나누기)
1. ArithmeticException (0으로 나누기)
package ex15;
public class DivideByZeroOk {
public static void main(String[] args) {
try {
int result = 10 / 0;
System.out.println(result);
} catch (ArithmeticException e) {
System.out.println("괜찮아 : " + e.getMessage());
}
}
}

설명
10 / 0
연산을 수행하면ArithmeticException
이 발생합니다.
catch
블록에서 예외를 잡아"괜찮아 : / by zero"
라는 메시지를 출력하며 프로그램이 멈추지 않고 정상적으로 실행됩니다.
예외 처리는 예상치 못한 오류를 방지하고 프로그램의 안정성을 높이는 중요한 기능입니다.
2. InterruptedException
package ex15;
public class Check01 {
public static void main(String[] args) {
System.out.println("시작");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println("도중에 꺼졌는데 괜찮아");
}
System.out.println("끝");
}
}

설명
Thread.sleep()
은 일정 시간 동안 현재 스레드를 멈추는 기능을 합니다.
- 실행 중 다른 스레드가 인터럽트(Interrupt) 를 걸면
InterruptedException
이 발생합니다.
- 예외를
catch
블록에서 처리하여 프로그램이 비정상 종료되지 않도록 합니다.
3. FileNotFoundException
package ex15;
import java.io.FileNotFoundException;
import java.io.FileReader;
public class Check02 {
public static void main(String[] args) {
try {
FileReader fileReader = new FileReader("C:/hello/good.txt");
} catch (FileNotFoundException e) {
System.out.println("파일을 내가 직접 C:/hello/good.txt 생성");
}
}
}

설명
FileReader
를 사용하면 특정 경로의 파일을 읽을 수 있습니다.
- 파일이 존재하지 않으면
FileNotFoundException
이 발생합니다.
- 예외를 잡아
"파일을 내가 직접 C:/hello/good.txt 생성"
같은 메시지를 출력하여 프로그램이 비정상 종료되지 않도록 합니다.
4. ArithmeticException을 활용한 최대공약수(GCD) 계산
package ex15;
public class Run01 {
public static int gcd(int a, int b) {
//if (b == 0) return a;
try {
return gcd(b, a % b);
} catch (ArithmeticException e) {
return a;
}
}
public static void main(String[] args) {
int r = gcd(10, 20); // [1,2,5,10], [1,2,4,5,10,20]
System.out.println(r);
}
}

설명
- 유클리드 호제법을 사용하여 최대공약수를 구합니다.
- 일반적으로
if (b == 0) return a;
로 처리하지만,여기서는a % b == 0
일 때ArithmeticException
을 발생시키고catch
블록에서 결과를 반환합니다.
5. throw를 사용한 예외 강제 발생
package ex15;
public class Try01 {
public static void main(String[] args) {
throw new ArithmeticException("강제로 만든 익셉션");
// throw new ~ 하면 강제로 터트릴 수 있음.
}
}

설명
throw new ArithmeticException("강제로 만든 익셉션");
→ArithmeticException
을
직접 발생시켜 프로그램이 강제 종료됩니다.
throw
키워드를 사용하면 임의의 시점에서 예외를 발생 시킬 수 있습니다.
- 이 방식은 사용자 정의 예외 처리, 유효성 검사, 예외 테스트 등에 활용될 수 있습니다.
6. RuntimException 위임 및 처리
package ex15;
class A {
static int start(boolean check) {
int r = B.m1(check);
return r;
}
}
class B {
static int m1(boolean check) {
if (check) {
return 1;
} else {
throw new RuntimeException("false 오류남");
}
}
}
public class Try02 {
public static void main(String[] args) {
try {
int r = A.start(false);
System.out.println("정상 : " + r);
} catch (Exception e) {
System.out.println("오류 처리 방법 : " + e.getMessage());
}
}
}

Share article