반응형
해당 강의를 보고 정리한 것입니다.
https://programmers.co.kr/learn/courses/5
Throws
: 예외가 발생했을 때 예외를 호출한 쪽에서 처리하도록 던져주는 것
public class ExceptionExam2 {
public static void main(String[] args) {
int i = 10;
int j = 0;
try {
int k = divide(i,j);
System.out.println(k);
}catch(ArithmeticException e) {
System.out.println(e);
}
}
public static int divide(int i, int j) throws ArithmeticException{
int k = i/j;
return k;
}
}
- divide 클래스에서는 오류를 처리하지 않고 호출하는 main클래스에서 오류를 처리해주는 것
- 한 번에 관리하고자 할 때 사용하면 좋을 것 같다
Throw
: 강제로 오류를 발생시키는 키워드, 보통 throws와 같이 사용됨
public class ExceptionExam3 {
public static void main(String[] args) {
int i = 10;
int j = 0;
int k = divide(i,j);
System.out.println(k);
}
public static int divide(int i, int j) {
if(j == 0 ) {
System.out.println("divide의 두번째 매개변수는 0이 올 수 없습니다.");
return 0;
}
int k = i/j;
return k;
}
}
- divide의 두 번째 파라미터의 값이 0일 경우 나누기를 할 때 divide는 0을 리턴 함.
- 하지만 0으로 나누기를 한 결과는 0이 아니기 때문에 추후 다른 곳에서 더 큰 문제를 야기할 수 있음
throw를 이용해 에러를 발생하지 않으며, 올바르지 않은 결과를 리턴하지 않도록 수정
public static int divide(int i, int j) throws IllegalArgumentException{
if(j == 0 ) {
throw new IllegalArgumentException("0으로 나눌수 없습니다");
}
int k = i/j;
return k;
}
- j에 0이 올 경우 new 연산자를 통해 IllegalArgumentException객체가 생성
- throw는 해당 라인에서 예외가 발생한다는 의미
즉, 해당 줄에서 오류가 발생.("0으로 나눌수 없습니다"라는 오류 발생) - Exception클래스 이름을 보면 아규먼트가 잘못됐기 때문에 발생한 오류라는 걸 알 수 있다.
divide 메서드를 호출 한 쪽에서의 오류 처리
- divide 메서드 뒤에 throws IllegalArgumentException : 해당 오류는 divide를 호출한 쪽에서 처리를 해야 한다.
public class ExceptionExam3 {
public static void main(String[] args) {
int i = 10;
int j = 0;
try {
int k = divide(i,j);
System.out.println(k);
}catch(IllegalArgumentException e) {
System.out.println(e);
}
}
public static int divide(int i, int j) throws IllegalArgumentException{
if(j == 0 ) {
throw new IllegalArgumentException("0으로 나눌수 없습니다");
}
int k = i/j;
return k;
}
}
>>
java.lang.IllegalArgumentException: 0으로 나눌 수 없습니다
반응형
'Language > Java' 카테고리의 다른 글
자바 입문하기20 - 문제풀기)약수의 합 (0) | 2022.01.12 |
---|---|
자바 입문하기19 - 사용자정의 exception (0) | 2022.01.12 |
자바 입문하기17 - Exception (0) | 2022.01.12 |
자바 입문하기16 - 내부클래스 (0) | 2022.01.12 |
자바 입문하기15 - 인터페이스 (0) | 2022.01.12 |