Skip to content

Latest commit

 

History

History
165 lines (113 loc) · 5.28 KB

2024-05-21.md

File metadata and controls

165 lines (113 loc) · 5.28 KB

날짜: 2024-05-21


🌤️ 스크럼

  • 학습 목표 1 : 자바 에러와 예외클래스 이해하기

⚡️ 새로 배운 내용

[JAVA] Error와 Exception

  • 프로그래밍의 오류
    발생 시점에 따라 크게 3가지로 나눈다.

    • 컴파일 에러(compile-time error)
      컴파일 시 발생하는 오류

      • ex. 문법 오류(syntax error), 타입 체크 오류(type check error)
    • 논리적 에러(logical error)
      실행은 되지만, 의도와 다르게 동작하는 오류
      = 버그

    • ⭐️ 런타임 에러(runtime error)
      실행 시 발생하는 오류

      • ex. 예외(exception), 에러(error)

Error와 Exception 모두 Throwable 클래스를 상속받는다.

예외 구분

  • Error(에러)
    프로그램 코드에 의해 수습될 수 없는 예측 불가한 심각한 오류

    • 에러가 발생하면 프로그램이 종료된다.

    • 주로 JVM에서 발생하는 문제로, 애플리케이션에서 직접 처리하거나 복구할 수 없다.

    • 대표적인 에러

      • OutOfMemoryError
        메모리가 부족할 때
      • StackOverflowError
        스택 메모리가 부족할 때
  • Exception(예외)
    프로그램 코드에 의해 수습될 수 있는 예측 가능한 오류

    • 예외가 발생했을 때 프로그램이 종료될 수 있지만, 예외 처리 코드를 통해 정상적으로 실행을 계속할 수 있다.

    • 분류

      • Checked Exception - 컴파일 에러
        자바 소스를 컴파일하는 과정에서 발생하는 예외

        • Exception을 상속받는다.

        • 대표적인 컴파일 예외

          • IOException
            입출력 관련 예외
          • SQLException
            데이터베이스 관련 예외
          • ClassNotFoundException
            클래스를 찾을 수 없는 예외
      • Unchecked Exception - 런타임 에러
        Runtime Exception(실행 예외)이라고도 불리며, 실행 시 발생하는 예외

        • RuntimeException을 상속받는다.

        • 컴파일러가 체크를 하지 않기 때문에 오로지 개발자의 경험에 의해서 예외 처리를 해야 한다.

        • 대표적인 런타임 예외

          • NullPointerException
            null 값을 갖는 참조 변수로 객체 접근 시

            String str = null;
            System.out.println(str.length()); // NullPointerException
          • ArrayIndexOutOfBoundsException
            배열의 범위를 벗어난 인덱스로 배열에 접근 시

            int[] arr = new int[3];
            System.out.println(arr[3]); // ArrayIndexOutOfBoundsException
          • NumberFormatException
            숫자로 변환할 수 없는 문자열을 숫자로 변환 시

            String str = "abc";
            int num = Integer.parseInt(str); // NumberFormatException
          • ClassCastException 상속/구현 관계가 아닌 클래스 간 형변환 시

            // Dog와 Cat은 Animal을 상속받는다.
            
            Animal animal = new Dog();
            Dog dog = (Dog) aninal;
            Cat cat = (Cat) animal; // ClassCastException

            instanceof 연산자를 사용하여 형변환 가능 여부를 먼저 확인해야 한다.

            if (animal instanceof Cat) { // boolean
              Cat cat = (Cat) animal;
            }

🔥 오늘의 도전 과제와 해결 방법

[JAVA] 문자열이 비어있는지 확인하기

isEmpty() vs trim().isEmpty()

  • 상황
    샌드위치 주문 CLI 프로그램을 만드는데, 사용자가 값을 입력하지 않고 엔터를 눌렀을 경우를 처리하고 싶었다.

  • 의도
    입력값(input)이 비어있는지 확인한다.

  • input.isEmpty() vs input.trim().isEmpty()

    • input.isEmpty()

      문자열의 길이가 0인지 확인한다.

      • 이 메소드는 문자열이 공백 문자만 포함하고 있을 경우에도 false를 반환합니다.
    • input.trim().isEmpty()

      문자열의 앞뒤에 있는 공백을 제거한 후(trim() 메소드의 작업), 그 결과 문자열이 비어있는지 확인한다.

      • 문자열이 공백 문자만 포함하고 있을 경우 true를 반환합니다.
  • 방법
    사용자가 공백 문자만 입력했을 때 이를 비어있는 입력으로 처리하려면 input.trim().isEmpty()를 사용해야 한다.

    Topping.java

    if (input.trim().isEmpty()) {
    break;
    }

🤔 오늘의 회고

  • 스크럼 중 완료한 작업: 자바 에러와 예외클래스 이해하기
  • 수업을 듣고 팀원들과 개념정리를 하는 시간에서도 헷갈리던 개념이었는데, 내용을 정리하면서 더 명확하게 이해할 수 있었다.
  • 예외 처리 구현을 위한 try-catch 문과 throws 키워드에 대해 더 공부해야겠다.

참고 자료 및 링크