수업노트 - until(), exception(예외처리), throw

sanchez9·2023년 7월 19일
0

JAVA 수업노트

목록 보기
12/16
  • until()
    • 메소드를 사용하면 두 날짜 사이의 기간(Period)을 구할 수 있다.

    • 전체 일 수 차이를 구하려면 ChronoUnit 클래스의 Between() 메소드를 사용

      LocalDate today = LocalDate.now(); // 현재 날짜
      LocalDate oldDate = LocalDate.of(2021,7,1); //
      
      Period period = oldDate.until(today); // 비교일로부터 오늘까지의 날짜 차이 계산
      
      System.out.println(today);
      System.out.println(oldDate);
      System.out.println(period.getYears()); //년
      System.out.println(period.getMonths()); //월
      System.out.println(period.getDays()); //일
  • 날짜비교
    • LocalDate, LocalDateTime은 아래와 같이
      • isBefore(ChronoLocalDate other),
      • isEqual(ChronoLocalDate other),
      • isAfter(ChronoLocalDate other) 메서드를 사용해 날짜를 비교할 수 있다.
      • 리턴 타입은 boolean(truem false)이다.
  • 날짜조절
    • .plus~, .min~
    • LocalTime, LocalDateTime, ZonedDateTime
    • 클래스는 각각 시간, 분, 초, 나노초를 더하거나 뺄 수 있다.

  • Error → 치명적인 오류

    • 컴파일 에러: 실행되지 않음
    • 런타임 에러: 실행 중에 오류가 남
  • exception(예외) → 무시할 수 있는 정도의 오류

    • 오류가 있어도 중단되지 않고 프로그램을 실행 *** 예외처리의 목적
    • 실행 중 오동작이나 결과에 악영향을 미치는 예상치 못한 상황이 발생
    • 자바에서는 실행 중 발생하는 에러를 예외로 처리한다(미리 예상, 대비)
      • error(치명적인 에러)가 아닌 경우. 무시할 수 있는 수준의 에러(Exception, 예외)
    • try문에서 예외가 발생되면 그 아래 명령문이 실행되지 않는다.
    • 예외가 생길 것을 대비하여 미리 예외처리문을 만들고, 예외가 발생 되지 않으면 정상적으로 실행되고 예외가 발생이 되면 예외를 처리하고 정상 실행.
    • 예외에 맞게 처리문 작성하지 않으면 프로그램 정상종료 할 수 없다.

    1. 예외를 처리하고 정상적으로 프로그램을 수행할 목적*
    2. try~catch문 사용
    3. 데이터베이스 연결 시 등등에 사용한다.
  • 실행 중 예외가 발생하면

    • 자바 플랫폼은 응용프로그램이 예외를 처리하도록 호출
    • 응용프로그램이 예외를 처리하지 않으면 프로그램을 강제 종료 시킴.
  • 예외 발생 경우(예시)

    • 정수를 0으로 나누는 경우
    • 배열의 크기보다 큰 인덱스로 배열의 원소를 접근하는 경우
    • 정수를 읽는 코드가 실행되고 있을 때 사용자가 문자를 입력한 경우
    • 클래스를 찾지 못 할 경우 (JDBC 드라이버)
    • 데이터베이스 연동시 커넥션 오류인 경우
  • 예외처리 방법 1 → 정상 실행, 종료

    • 발생한 예외에 대해 개발자가 작성한 프로그램 코드에서 대응하는 것

    • try-catch-finally문 사용
      - 예외가 발생 안했을 때 : ① → ③ → ④
      - 예외가 발생하면 : ① → ② → ③ → ④

      //finally 블록은 생략 가능
      
      try{//(예외가 발생할 가능성이 있는) 실행문(명령문) -> 예외 1
      }catch(처리할 예외 타입 선언) {//(예외가 발생할 때만 실행되는) 예외처리문 -> 예외 1 
      }finally{// 예외 발생 여부와 상관없이 무조건 실행되는 문장.
      }//정상실행
    • catch { }

      • printStackTrace() : 예외 발생 시 호출 스택에 있었던 메서드의 정보와 예외메세지를 출력
      • getMessage() : 발생한 예외 클래스의 인스턴스에 저장된 메세지(실제 예외)
  • 예외처리 방법 2

    • 예외를 발생 → 예외를 던졌다, throw, throws

      throw new Exception();
      
      try{
      				//고의 예외발생 -> DB 관련 처리시 특별한 경우 
      				throw new Exception();
      }catch(Exception e) {
      
      }
    • 메서드에 throws
      - 메서드 선언부에서 예외를 던지면 구현부에서 그 예외가 발생이 되면 try~catch문을 사용하지 않아도 된다.

      public void excuteQueryService() throws ClassNotFoundException, SQLException{
      				//try~catch문 생략가능
      }
  • 다중예외 처리
    ///exception -> 모든 예외를 처리
    
    try{//(예외가 발생할 가능성이 있는) 실행문(명령문) -> 예외 1
    }catch(Exception e){
    			e.printStackTrace();
    }finally{
    			System.out.println("기본 실행");
    }
    • 발생할만한 오류를 먼저 적고 마지막에 Exception

  • ClassNotFoundException → class 찾기

  • SQLException → SQL관련, Connection

  • try~catch문 안에 try~catch문을 쓸 수 있다.


throw IOException, SQLexception etc

//데이이스 연결(Connetion 연동), SQL처리, File입출력에 사용된다

//Servelet→Web→service

***예외(Exception)도 오버라이딩 된다.

profile
자바를 배우고 있어요

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

정말 좋은 글 감사합니다!

답글 달기