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문에다가 에러처리를 할 수도 있습니다.
'[Java] > [Java]' 카테고리의 다른 글
[Java] 자바 멀티스레드 [Multi-Thread] (Thread) (0) | 2021.08.04 |
---|---|
[Java] 자바 멀티스레드[Multi-Thread] (Runnable) (0) | 2021.08.04 |
[Java] 자바 중첩 인터페이스(Interface) (0) | 2021.08.02 |
[Java] 자바 중첩 클래스, 로컬 클래스 (Class) (0) | 2021.08.02 |
[Java] 자바 Try Catch (예외 처리) (0) | 2021.07.25 |