2024. 4. 26. 20:19ㆍT.I.L
오늘 한 일
- 4주차 강의 수강
- Java 개인 과제 Lv.1
- 알고리즘 DP공부
수기를 남기기에 앞서 교육 내용이 많아, 평소 헷갈렸던 개념 위주로 T.I.L을 작성했다.
오늘은 예외 처리, 제네릭에 대해 배웠다.
프로그램에서 문제가 발생했을 때, 문제를 크게 2가지로 나눌 수 있다.
문제 - 오류(Error) : 회복이 불가능한 문제 - 예외(Exception) : 회복이 가능한 문제로, 예외 처리 대상이 된다. |
즉, 우리가 깊게 팔 부분은 예외가 발생했을 때이다.
예외(Exception)의 종류 컴파일 에러 (Checked Exception) : 코드에 오탈자나 접근 범위를 헷갈린 경우 발생하기 쉽다 런타임 에러 (Unchecked Exception) : "프로그램" 실행 도중에 발생하는 예외 |
예외 처리는 크게 3가지 절차로 나뉩니다.
일단 , 예외가 있어야 처리를 할 수 있겠죠?
예외 정의 -> 예외 발생 알림 -> 예외 핸들링
사전에 Exception class로 에러를 정의해야 합니다. (예제를 들기 위해 클래스를 만들었지만, 기본 클래스를 사용해도 됩니다.)
class OurBadException extends Exception {
public OurBadException() {
super("위험한 행동을 하면 예외처리를 꼭 해야합니다!");
}
}
그리고 다른 클래스에서 임의로 오류가 존재한다고 가정하고 (just를 오류 여부로 봅시다)
오류가 발생했을때 던져줄 클래스를 throws로 덧붙여줍니다. 상속의 개념과 유사하다고 보면 됩니다. 이후, 오류가 발생하였을 시 throw로 실제 예외 객체를 던져줍니다!
class OurClass {
private final Boolean just = true;
// 신규 문법 throws!
public void thisMethodIsDangerous() throws OurBadException {
if (just) {
// 신규 문법 throw!
throw new OurBadException();
}
}
}
예외 처리 예제 ( main문에서 사용하기 )
public class StudyException {
public static void main(String[] args) {
OurClass ourClass = new OurClass();
try {
// 1. 위험한 메소드의 실행을 "시도" 해 봅니다.
// "시도" 해보는 코드가 들어가는 블럭입니다.
ourClass.thisMethodIsDangerous();
} catch (OurBadException e) {
// 2. 예외가 발생하면, "잡아서" handling 합니다.
// 예외가 발생하는경우 "handling" 하는 코드가 들어가는 블럭입니다.
// 즉 try 블럭 내의 구문을 실행하다가 예외가 발생하면
// 예외가 발생한 줄에서 바로 코드 실행을 멈추고
// 여기 있는 catch 블럭 내의 코드가 실행됩니다.
System.out.println(e.getMessage());
} finally {
// 3. 예외의 발생 여부와 상관없이, 실행시켜야 하는 코드가 들어갑니다.
// 무조건 실행되는 코드가 들어가는 블럭입니다.
System.out.println("우리는 방금 예외를 handling 했습니다!");
}
}
}
사실 예제를 보면서 뭐...? 예외 처리 하려면 클래스가 3개가 필요한건가..? 했는데 그건 아닙니다 ㅋㅋㅋ
public Parser parseFirstNum(String firstInput) throws Exception{
if (!Pattern.matches(NUMBER_REG, firstInput)) {
throw new BadInputException("정수값");
}
이런식으로 if문으로 오류 발생 여부를 확인하고 throw로 던져주시면 됩니다!
1. try-catch
2. throws, throw
중 취향따라 하나 골라서 서술하시면 됩니다.
인텔리제이로 코딩하다보니 throw 함수를 사용하면 자동 완성도 해줘서 생각보다 예외 처리 어렵지 않았어요!
이번주 주말도 인텔리제이와 오붓하게 보내보겠습니다.. 자바를 배우는 모든 여러분들 화이팅 !
'T.I.L' 카테고리의 다른 글
[24.04.30] 내일배움캠프 12일차 JAVA TIL - Thread, 모던 자바 (0) | 2024.04.30 |
---|---|
[24.04.29] 내일배움캠프 11일차 JAVA TIL - Thread, 모던 자바 (0) | 2024.04.29 |
[24.04.25] 내일배움캠프 9일차 JAVA TIL - 객체지향 프로그래밍 (1) | 2024.04.25 |
[24.04.24] 내일배움캠프 8일차 JAVA TIL - 객체지향 프로그래밍 (0) | 2024.04.24 |
[24.04.23] 내일배움캠프 7일차 JAVA TIL - 연산자, 제어문, 컬렉션 (0) | 2024.04.23 |