TIL/Java

TIL 2024-10-14 (Java 문법 종합반)

myoma 2024. 10. 14. 20:53

1 ) 오류 및 예외에 대한 이해.

  • 오류(Error) - 일반적으로 회복이 불가능한 문제
    • 시스템 레벨에서, 또는 주로 환경적인 이유로 발생
    • 코드의 문제로 발생하는 경우도 있지만, 일단 발생하는 경우 일반적으로 회복이 불가능하다.
    • 에러가 발생한 경우 우리는 어떠한 에러로 프로그램이 종료되었는지 확인하고 대응.
  • 예외(Exception) - 일반적으로 회복이 가능한 문제.
    • 회복이 가능하다는 전제는 우리가 "그 예외가 발생할 수 있다는 것을 인지하고, 대응했을 것 입니다."
    • 현실적으로 코드 레벨에서 할 수 있는 문제 상황에 대한 대응은 "예외 처리"에 속합니다.
      • 컴파일 에러(예외) - 문법적인 오류
      • 런타임 에러(예외) - 문법적인 오류가 아닌 프로그램 실행 도중 맞닥뜨리는 예외

 


2 ) 예외 발생 ( try-catch, finally )

 

  1. 우리가 예외를 어떻게 정의하고,
  2. 예외가 발생할 수 있음을 알리고.
  3. 사용자는 예외가 발생할 수 있음을 알고 예외를 핸들링하는지
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 - 추상적 자료구조로서, 순서를 가지고, 일렬로 나열한 원소들의 모임. (중복 허용)
  • 배열 - 순서대로 번호가 붙은 원소들의 연속적인 형태로 구성된 구조를 뜻한다.

 

  • 상황에 맞는 적절한 자료구조를 택하는 방법.
    1. 인터페이스, 즉 속성에서는 코드를 보고 "어떠한 일을 해주는 지" 알 수 있습니다.
    2. 클래스, 즉 실제 구현체에는 위의 어떠한 일을 "어떻게 해주는 지" 알 수 있습니다.
    3. 즉 내가 지금 데이터를 다루는데 필요한 기능을 어떠한 것들이 해주는지는 인터페이스에서 찾고, 어떠한 방식으로 해줘야 유리할지는 실제 구현체를 보고 판단하면 된다.
    4. 사실 제일 좋은 방법은 자주 코드를 접하여 어떠한 상황에 어떠한 자료구조를 주로 사용하는 지 익히는 게 좋다