본문 바로가기
TIL

내일배움캠프 3주차 TIL + 오류와 예외처리

by 율량동박씨 2024. 4. 29.

오늘의 키워드

  • 오류와 예외
  • try, catch, finally문
  • Generic

오늘의 내용

  • 오류와 예외
    • 오류 : 일반적으로 회복이 불가능한 문제, 주로 환경적인 원인으로 발생, 발생원인 확인 후 대응한다
    • 예외 : 회복이 가능한 문제로 코드레벨에서 할 수 있는 대응은 '예외처리'에 속한다
      • 컴파일 에러 : 자바 프로그래밍의 규칙을 지키지 않으면 발생하고 문법을 맞게 작성하면 해결된다. 특정한 문제는 인지만 하고 예외처리를 하지 않으면 발생
      • 런타임 에러 : 컴파일은 잘되었지만 프로그램 실행도중 발생하는 예외이다
        • 확인된 예외 : 컴파일 시점에 확인하는 예외, 반드시 예외처리를 해줘야 하는 예외, 컴파일 에러와 다르다
        • 미확인된 예외 : 런타임 시점에 확인되는 예외, 예외처리가 반드시 필요하지 않은 예외
  • try, catch, finally문
    • 아래는 구문의 사용 예제
    • try {
      // 1. 위험한 메소드의 실행을 "시도" 해 봅니다.
      // "시도" 해보는 코드가 들어가는 블럭입니다.
      ourClass.thisMethodIsDangerous();
      } catch (OurException e) {
      // 2. 예외가 발생하면, "잡아서" handling 합니다.
      // 예외가 발생하는경우 "handling" 하는 코드가 들어가는 블럭입니다.
      // 즉 try 블럭 내의 구문을 실행하다가 예외가 발생하면
      // 예외가 발생한 줄에서 바로 코드 실행을 멈추고
      // 여기 있는 catch 블럭 내의 코드가 실행됩니다.
      System.out.println(e.getMessage());
      } finally {
      // 3. 예외의 발생 여부와 상관없이, 실행시켜야 하는 코드가 들어갑니다.
      // 무조건 실행되는 코드가 들어가는 블럭입니다.
      System.out.println("우리는 방금 예외를 handling 했습니다!");}
  • Chained Exception
    • 연결된 예외를 말함, 여러 개의 예외를 하나의 큰분류로 묶어서 다루기 위해 사용한다
    • initCause() - 원인예외를 등록
    • getCause() - 원인예외를 반환
  • Generic
    • public class Generic<T> { ... } 제네릭을 사용한 클래스를 제네릭 클래스라고 한다
    • 제네릭의 효용 : 중복되거나 필요없는 코드를 줄이는 것 그러면서도 타입 안정성을 해치지 않는 것
    • 제네릭에서 <> 사이에 들어가는 변수명 T는 타입변수라 한다
    • static멤버들은 제네릭을 사용할 수 없다
    • 다수의 타입변수 사용할 수 있다 (= public class Generic<T, U, E> { })
    • 상속과 타입의 관계는 그대로 적용된다
    • 와일드카드를 통해 제네릭의 제한을 정할 수 있다
      • <? extends T> : T와 그 자손들만 사용 가능
      • <? super T> : T와 그 조상들만 가능
      • <?> : 제한 없음
    • 메서드 자체만으로도 제네릭을 만들 수 있다

 

오늘의 회고

  • 오류와 예외처리 강의를 들었는데 아직 감이 잘 안 잡힌다
  • 강의는 다 들었지만 숙제를 하려고 하니 지난 강의 숙제에서 연동을 해야 되는데 강의 내용과 숙제내용이 다르다 보니 어떻게 해야 되나 조금 더 고민해 봐야 될 듯