목차
1. try-catch
2. throw
3. throws
1. Try-catch
개념: 예외처리 구문
예시 코드를 통한 try-catch 구조의 이해
public class ThrowExample {
public static void main(String[] args) {
try {
// 예외 발생 가능성이 있는 코드
int i = 100;
int a = 0;
System.out.println(i/a);
} catch (Exception e) {
// 예외가 발생했을 경우만 실행
System.out.println("예외 종류: " + e);
System.out.println("예외가 발생하였습니다.");
}
finally {
// 예외가 있든 없든 무조건 실행됨
System.out.println("-----------------------------");
System.out.println("예외가 있든 없든 무조건 실행 됩니다.");
}
}
}
출력결과
2. Throw
개념: 예외를 던져주는 코드
예외를 직접 생성해 일부러 던져준다는 Throw의 개념은 쉽게 이해가 됩니다. 하지만 도대체 왜 Throw의 기능이 필요할까요?
예를 들어 내가 나눗셈을 만들었는데 1로 나누면 안되게 조건을 걸어주고 싶다면 아래와 같이 코드를 작성해야 합니다.
1. OneShouldNotInHereException 이라는 클래스를 만든다.
2. 특정 조건에서 예외를 던지게구성한다.
예제 코드
public class ThrowExample {
public void divideNum(int i, int a) {
if (a == 1) {
try {
throw new OneShouldNotInHereException();
} catch (OneShouldNotInHereException e) {
System.out.println("에러: 1로 나눌 수 없습니다.");
}
} else {
System.out.println(i / a);
}
}
public static void main(String[] args) {
ThrowExample throwExample = new ThrowExample();
System.out.println("*첫 번째 계산");
// 예외 발생 가능성이 있는 코드
int i = 100;
int a = 1;
throwExample.divideNum(i, a);
}
}
출력결과
OneShouldNotInHererException
이는 아래와 같이 exception을 상속받아 만들어 주었습니다.
3. Throws
그렇다면 도대체 Throws 와의 차이는 무엇인가요? throws 는 throw 값을 받는 곳에서 예외를 처리하도록 하여 예외처리의 주체를 바꿔주는 겁니다. 아래의 코드와 위의 코드를 비교해봅시다.
예제 코드
public class ThrowExample {
public void divideNum(int i, int a) throws OneShouldNotInHereException {
if (a == 1) {
throw new OneShouldNotInHereException();
} else {
System.out.println(i / a);
}
}
public static void main(String[] args) {
ThrowExample throwExample = new ThrowExample();
System.out.println("*첫 번째 계산");
// 예외 발생 가능성이 있는 코드
int i = 100;
int a = 1;
try {
throwExample.divideNum(i, a);
}
catch (OneShouldNotInHereException e) {
System.out.println("에러: 1로 나눌 수 없습니다.");
}
}
}
기존에는 메소드 안에서 예외를 처리했지만, 메소드 밖의 main()에서 예외처리를 하게 됩니다.
요약:
throw를 사용하여 프로그래머가 원하는 조건에 원하는 예외를 생성할 수 있습니다.
이를 메소드 안에서 처리할 수도 있지만, throws를 통해 메소드를 호출하는 곳에서 예외를 처리할 수 있게 하는 것입니다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Android] 배포 시 카카오 링크 키 작동 안함 해결하기 (0) | 2022.06.09 |
---|---|
[Android ] 카카오 api 링크로 구현한 것에 playstore url 연동하기 (0) | 2022.05.25 |
[Android ] 카카오톡 메시지 링크 보내기 초기 설정하는 방법 (0) | 2022.05.11 |
[Android] 카카오 링크 보내기 실패 keyhash 등록 에러 (0) | 2022.05.05 |
[Android java] Dialog에서 setProgressDrawable 하는 방법 (Context문제) (0) | 2022.04.27 |