1 ) 오류 및 예외에 대한 이해.
- 오류(Error) - 일반적으로 회복이 불가능한 문제
- 시스템 레벨에서, 또는 주로 환경적인 이유로 발생
- 코드의 문제로 발생하는 경우도 있지만, 일단 발생하는 경우 일반적으로 회복이 불가능하다.
- 에러가 발생한 경우 우리는 어떠한 에러로 프로그램이 종료되었는지 확인하고 대응.
- 예외(Exception) - 일반적으로 회복이 가능한 문제.
- 회복이 가능하다는 전제는 우리가 "그 예외가 발생할 수 있다는 것을 인지하고, 대응했을 것 입니다."
- 현실적으로 코드 레벨에서 할 수 있는 문제 상황에 대한 대응은 "예외 처리"에 속합니다.
- 컴파일 에러(예외) - 문법적인 오류
- 런타임 에러(예외) - 문법적인 오류가 아닌 프로그램 실행 도중 맞닥뜨리는 예외
2 ) 예외 발생 ( try-catch, finally )
- 우리가 예외를 어떻게 정의하고,
- 예외가 발생할 수 있음을 알리고.
- 사용자는 예외가 발생할 수 있음을 알고 예외를 핸들링하는지
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 ) Generic 알아보기
- 제네릭의 효용
- 첫 번째로 제네릭의 효용은 타입 언어에서 '중복되거나 필요없는 코드를 줄이는 것' 이다.
- 두 번째 제네릭의 효용은 그러면서도 타입 안정성 해치지 않는 것 이다.
- 제네릭의 문법
- 클래스 또는 메서드를 사용할 수 있다. 클래스 이름 뒤에 <> 문법 안에 들어가야 할 타입 변수를 지정한다.
- 타입 변수의 이름을 주로 T 로 사용.( 일종의 컨벤션)
public class Generic<T> { ... }
Generic<String> stringGeneric = new Generic<>();
- Generic의 클래스 타입은 원시 타입이다.
- 객체의 static 멤버에 사용할 수 없다.
static T get { ... } // Error
static void set(T t) // Error
- 타입 변수는 인스턴스 변수로 간주되고, 모든 객체에 동일하게 동작해야 하는 static 필드 특성상 사용할 수 없음.
- 제네렉 배열 생성 불가
4 ) Collection 다시보기
- 자료구조? 추상적인 타입의 역할을 하면서, 해당 타입의 구현체들의 행동 양식이나 특성을 지정해주는 역할을 할 수 있다.
- List - 추상적 자료구조로서, 순서를 가지고, 일렬로 나열한 원소들의 모임. (중복 허용)
- 배열 - 순서대로 번호가 붙은 원소들의 연속적인 형태로 구성된 구조를 뜻한다.
- 상황에 맞는 적절한 자료구조를 택하는 방법.
- 인터페이스, 즉 속성에서는 코드를 보고 "어떠한 일을 해주는 지" 알 수 있습니다.
- 클래스, 즉 실제 구현체에는 위의 어떠한 일을 "어떻게 해주는 지" 알 수 있습니다.
- 즉 내가 지금 데이터를 다루는데 필요한 기능을 어떠한 것들이 해주는지는 인터페이스에서 찾고, 어떠한 방식으로 해줘야 유리할지는 실제 구현체를 보고 판단하면 된다.
- 사실 제일 좋은 방법은 자주 코드를 접하여 어떠한 상황에 어떠한 자료구조를 주로 사용하는 지 익히는 게 좋다
'TIL > Java' 카테고리의 다른 글
TIL 2024-10-16 (Java 종합만 문법) (2) | 2024.10.16 |
---|---|
TIL 2024-10-15 (Java 문법 종합반) (2) | 2024.10.15 |
TIL 2024-10-11 (Java 문법 종합반) (0) | 2024.10.11 |
TIL 2024-10-10 (Java 문법 종합반) (0) | 2024.10.10 |
TIL 2024-10-08 (Java 문법 종합반) (3) | 2024.10.08 |