헬린코린이
[JAVA] 예외와 예외처리 본문
예외를 알아보겠다.
예외 Exception은 컴파일할 때에는 문제가 없었는데
실행시켜보니 문제가 발생하는 상황을 말한다.
예외가 발생하면 프로그램은 즉시 종료된다.
예외를 처리하는 문법은 try-catch문을 사용하면 된다.
예제를 보겠다.
public class Test01 {
public static void main(String[] args) {
int a = 10;
int b = 0;
// 컴파잃할떄에는, 정수가 저장되어있기때문에 올바르다고 판다.
// 실행시켜봅면, b에 0이 저장되어 나누기 불가능!!!
try {
// 예외가 발생되면 즉시 catch문으로 이동함
System.out.println("로그 A");
System.out.println(a/b);
System.out.println("로그 B");
}catch(ArithmeticException e) {
System.out.println("로그 C");
e.printStackTrace();
}
}
}
이렇게 간단한 코드가 있을 때
try-catch문을 사용하지 않았다면
0으로 나눌 수 없다고

예외가 뜨고 즉시 프로그램은 종료된다. 하지만 try-catch문을 사용한다면 이예 외를 처리할 수 있다.
앞서 코드를 살펴보면 a/b값을 출력하는 곳에서 예외가 발생해 그 아래 로그 B는 출력이 되지 않고 catch문으로 이동한다.
그리고 로그 C가 출력된다 즉 예외가 발생하면 그 발생된 곳에서 멈추고 그 아래 있는 코드들은 실행되지 않는다.
모든 예외의 최상위 클래스가 Exception이다 이거 하나로 모든 예외를 처리할 수 있지만 어떤 예외가 발생했을 때 수행하는 걸 다르게
작성하고 싶으면 그 발생한 예외를 catch문에 써주면 된다.
catch문을 여러 개 써주어도 상관없다.
예외를 던질 수도 있는데
코드를 먼저 보겠다.
package class04;
public class Test06 {
public static void main(String[] args) {
int num1=10, num2=0;
try {
KimFunc(num1, num2);
} catch (Exception e) {
System.out.println("0으로 나눌 수 없습니다.");
}
}
public static void KimFunc(int a, int b) throws Exception{
int num=a/b;
System.out.println("num: "+num);
}
}
원래 예외가 발생한 곳에서 예외처리를 해줘야 하는데 아 몰라 귀찮아 날 쓰는 곳에서 예외 처리하든지 해 하고
throws는 던지다는 뜻인데 Exception예외를 던진다. 그래서 그걸 쓰는 메서드가 예외처리를 강제한다.
Comments