![[JAVA] 50. 예외 처리 2](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%255BJAVA%255D%252050.%2520%25EC%2598%2588%25EC%2599%25B8%2520%25EC%25B2%2598%25EB%25A6%25AC%25202%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3Dsxias&w=2048&q=75)
예외 처리기를 직접 작성
- 내가 원하는 예외 처리 방식을 지정 가능
- 해당 오류의 부모 클래스를 상속받음 → 부모 클래스의 메서드 사용 가능
1. DivideByZero
package ex15;
// RuntimeException을 상속받음 => RuntimeException
class BalanceLackException extends RuntimeException {
}
public class DivideByZeroOK02 {
public static void main(String[] args) {
try {
int result = 10 / 0;
System.out.println(result);
} catch (BalanceLackException e) {
System.out.println("괜찮아" + e.getMessage());
}
}
}
- 직접 만든 BalanceLackException은 원래 존재하지 않음
- RuntimeException을 상속받았기 때문에 메서드 사용 가능
2. 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);
}
}
- 마지막에는 0으로 나눌 수 없음 : 오류 발생
- 오류 발생 시 몫을 반환 : 이는 최대 공약수
Share article