헬린코린이

[JAVA] 예외와 예외처리 본문

Programming/Java

[JAVA] 예외와 예외처리

HCD 2022. 11. 29. 20:54

예외를 알아보겠다.

예외 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