반응형
package error_throws;

public class Calculator {
	
	public static int add (int x, int y) throws 천을_넘는_예외, 음수가_되는_예외 {
		int result = x + y;
		if(result > 1000) {
			throw new 천을_넘는_예외();
			// throw new NullPointerException();
		}
		
		if(result < 0) {
			throw new 음수가_되는_예외();
		}
		return x + y;
	}
}
package error_throws;

public class 음수가_되는_예외 extends Exception {
	
	@Override
	public String getMessage() {
		return "입력 값이 음수인 오류가 발생했습니다.";
	}
	
}
package error_throws;

public class 천을_넘는_예외 extends Exception {
	
}​
package error_throws;

public class ErrorThrows {
	

	public static void main(String[] args) {
	
		Calculator calc = new Calculator();
		int result = 0;
		// result = Calculator.add(6, 4); 예외처리를 해줘야한다.
		try {
			result = Calculator.add(-6, 4);
			
		}catch(음수가_되는_예외 e) {
			System.out.println(e.getMessage());
			System.out.println("음수가 발생 되었습니다.");
		}catch(천을_넘는_예외 e) {
			
		}
		System.out.println("add : " + result);
	}
}

컴파일하기 전에 빨간줄이 그어지는 에러가 있고 그렇지 않은 것이 있는데요 만약 값이 제대로 안 넘어갈 경우

컴파일은 됐지만 NullPointException이라는 에러가 나오게 됩니다. 이러한 것들을 처리하기 위해서 저번에

try catch문을 썼는데요 그걸 이제 더 발전 시켜서 사용해보려고 합니다.

 

더하기 계산 기능을 넣으려고 합니다. 

	public static int add (int x, int y) throws 천을_넘는_예외, 음수가_되는_예외 {
		int result = x + y;
		if(result > 1000) {
			throw new 천을_넘는_예외();
			// throw new NullPointerException();
		}
		
		if(result < 0) {
			throw new 음수가_되는_예외();
		}
		return x + y;
	}

static으로 선언해 주세요 throws는 신경 쓰지마시고 저희가 임의로 에러를 만드려고 합니다.

1000이라는 합이 나오면 에러가 나오도록 그리고 합이 음수가 나오면 에러가 나오도록 하려고 합니다.

 

throw new라는 건 에러를 강제로 발생시키는 것입니다. 

여기에서 우리가 만든 걸 쓸 수도 원래 있는 에러를 넣을수도 있습니다.

throw new 천을_넘는_예외(); 이런식으로 하면 천을_넘는_예외를 만들라고 빨간줄이 그어집니다.

가져다대시고 class를 만든다를 클릭해서 만들어주세요

 

package error_throws;

public class 천을_넘는_예외 extends Exception {
	
}

이렇게 만들어지게 됩니다.

 

이 클래스에서는 에러를 처리해주는 역할을 해줍니다. 어떤식으로 메세지를 반환할지 등...

아무것도 안 적을 수도 있습니다.

 

그리고 throws를 추가해줘야합니다.

public static int add (int x, int y) throws 천을_넘는_예외, 음수가_되는_예외 {
....

throws란 무엇이냐면 던진다는 뜻인데 s라서 여러개를 던질 수 있게 한다는 의미입니다.

여기에선 2개를 넘기도록 되어있는데 이게 어디로 던지냐고한다면 해당 에러가 발생한다면

예를 들어 result가 1000이 넘어가서 예외가 발생하면 그걸

위에 천을_넘는_예외라는 클래스에서 처리하겠다는 의미입니다.

 

package error_throws;

public class 음수가_되는_예외 extends Exception {
	
	@Override
	public String getMessage() {
		return "입력 값이 음수인 오류가 발생했습니다.";
	}
	
}

또한 예외 메세지를 넘길 때 이러한 방법으로도 넘길 수 있습니다.

getMessage()를 오버라이드 해서 사용 가능합니다.

	try {
			result = Calculator.add(-6, 4);
			
		}catch(음수가_되는_예외 e) {
			System.out.println(e.getMessage());
			System.out.println("음수가 발생 되었습니다.");
		}catch(천을_넘는_예외 e) {
			
		}

getMessage()를 통해서 메세지를 출력할수도 있고

저번에 try catch에서 한 거처럼 catch문에다가 에러처리를 할 수도 있습니다.

반응형