티스토리 뷰

1-18. 예외, 에러 처리

try-catch(-finally) 형식

try {
     // 예외가 발생할 가능성이 있는 코드를 구현합니다.
} catch (FileNotFoundException e) {
     // FileNotFoundException이 발생했을 경우,이를 처리하기 위한 코드를 구현합니다.
} catch (IOException e) {
     // FileNotFoundException이 아닌 IOException이 발생했을 경우,이를 처리하기 위한 코드를 구현합니다.
} finally {
     // 예외의 발생여부에 관계없이 항상 수행되어야하는 코드를 구현합니다.
}

 

+ try-with-resource 형식도 있다. (교재 참고)

1-19. 예외, 에러 처리 퀴즈

😵 Quiz 해설

1. divide 함수의 명세 바꾸기 - throws 키워드 : 어떤 종류의 에러들 exception을 던질 수 있는지 명시해주기 
so 함수를 쓰는 쪽에서 이 명세를 보고 이러이러한 에러에서 핸들링을 해야겠네 생각할 수 있음


2. ArithmeticException 을 캐치해서 "잘못된 계산"이라고 알려주기,
그리고 이 exception에 있었던 메시지도 같이 출력해주기 .getMessage( )
*결과값 : /by zero 뜻은 0으로 나눌 수 없다는 말


3. ArrayIndexOutOfBoundsException 을 캐치해서 "잘못된 index 범위"이며 타당한 index 범위는 0부터
배열의 마지막 순서(배열의 길이 - 1)까지 임을 알려주기

- throw : 에러를 고의로 발생시킬 때 사용합니다.
- throws : 자신을 호출한 상위 메소드로 에러를 던지는 역할을 합니다.

throws는 메소드를 정의할 때 사용하며, 이 메소드에서 발생할 수 있는 Exception을 명시적으로 정의할 때 사용합니다.
따라서 throws를 보면 잠재적으로 어떤 Exception을 발생될 수 있는지 쉽게 알 수 있습니다.

예외를 떠넘기는 방법은 다음과 같이 throws 키워드를 메서드 뒤에 붙여주면 됩니다.

public static void generateException() throws NullPointerException{
    //NullPointerException 발생
}


출처 : 
https://devlog-wjdrbs96.tistory.com/141
https://codechacha.com/ko/java-throw-and-throws/
https://dololak.tistory.com/87

 

[JAVA] 자바 예외 떠넘기기 - throws

예외 떠넘기기 - throws 사용메서드 내부에서 예외가 발생했을 때 예외를 try - catch 문으로 잡아서 처리할 수 있지만 경우에 따라서 현재 메서드를 호출한 메서드로 예외를 떠넘길 수 있습니다.예

dololak.tistory.com

 

※ 이제부터는 자바 코드 활용 방법을 배움

1-20. 날짜와 시간 다루기

now( ) 는 현재의 날짜 시간을 찍기
ㅇ of( )는 지정하는 값이 필드에 담김. 특정 시간/날짜를 숫자로 지정해서 보고싶을 때
- 변수로 설정하고 싶다면 of라는 매서드를 이용하면 됨

        System.out.println("now usages"); //now 활용
        LocalDate date = LocalDate.now(); //date 변수 만듦

        System.out.println("of() usage"); //특정한 시간 지정
        LocalDate dateOf = LocalDate.of(2022,03,30);


ㅇ formatter : 표시 형식을 지정(바꿈)

FormatStyle이라는 미리 정의된 옵션들이 있음

DateTimeFormatter (Java Platform SE 8 ) (oracle.com)

 

DateTimeFormatter (Java Platform SE 8 )

Parses the text using this formatter, without resolving the result, intended for advanced use cases. Parsing is implemented as a two-phase operation. First, the text is parsed using the layout defined by the formatter, producing a Map of field to value, a

docs.oracle.com

 

- 날짜와 시간 형식 수정 예제

        DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT);
        String shortFormat = formatter.format(LocalTime.now()); //현재 시간 출력
        System.out.println(shortFormat);

 

- FormatStyle 내가 원하는 형식으로 쓸 때

ex) String 으로 년, 월, 일 표현

        DateTimeFormatter myFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd" );
        String myDate = myFormatter.format(LocalDate.now());
        System.out.println(myDate);

 

- 날짜와 시간의 차이 계산

between( )을 사용

ex)

***
Period period = Period.between(today, birthday);
***

 

✔ Quiz 현재 날짜와 시간 출력

        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 hh시 mm분");
        String now = dateTimeFormatter.format(LocalDateTime.now());
        System.out.println("현재 시간: " + now);

내가 원하는 형식, 표현식이므로 'DateTimeFormatter.ofPatterm'을 쓰는 것

String now 뽑기