23.01.12

이동욱·2023년 8월 6일
0

NaverCloudCamp

목록 보기
10/42

학습내용

  1. 사용자 정의 예외
  2. Anonymous class
  3. I/O

사용자 정의 예외

필요한 Exception이 기존의 Exception에 없는 경우 사용자가 Exception을 직접 생성하고 Exception을 발생시킬 수 있다.

//홀수일때 발생시킬 예외 직접 작성
class FindOddException extends Exception {
	public FindOddException() {
		System.out.println("FindOddException Default Constructor");
}


public void findOdd(int number) throws FindOddException { //throws 키워드를 통해 발생 할 수 있는 예외 명시
		if(number % 2 == 0) {
			System.out.println("짝수입니다.");
		}else {
			throw new FindOddException(); //throw 키워드를 통해 number가 홀수이면 예외 발생
		}
	}
}

Anonymous class(나중에 배운후 세부적으로 포스팅)

oracle document에 명시되어있는 내용을 보면 "Anonymous classs는 선언과 인스턴스화를 동시에 가능하게 하며 일반 local class처럼 보이지만 이름을 가지지 않는다, 코드를 더욱 간결하게 해주며
local class를 한 번만 사용하고 싶을 때 사용해라"로 Anonymous class를 정의하고 있다.
첫번째 anonymous라면 컴파일시 "class이름"$1.class로 class파일이 생성된다.

I/O

java의 class파일로부터 외부로부터 자원을 입출력하고 싶을 때 사용하는 bean들을 모아놓은 패키지이다.
1. Inputstream/OutputStream

  • io패키지 최상위 class들에 속한다.
  • 1byte씩 읽기가 가능하여 영어만 원활하게 표현할 수 있고 기타 언어들은 입출력 중 깨질 수 있다.
  • abstract class로 구현할 수 없으며 다양한 하위 class들이 존재한다
  1. Reader/Writer
  • io패키지 최상위 class들에 속한다.
  • 문자열 단위로 입출력을 처리하여 영어를 제외한 다른 언어들도 표현할 수 있지만 InputStream OutputStream에 비해 적은 하위 class를 가지고 있다.
  • abstract class로 구현할 수 없다.
  1. InputStreamReader/OutputStreamReader
  • InputStream, OutputStream의 다양한 하위 class들을 Reader, Writer에서 사용하기 위해 만들어진 class들이다.
  • InputStreamReader와 OutputStreamReader는 Reader와 Writer의 하위 클래스이다.
  • InputStream과 OutputStream을 파라미터로 받기에 InputStream과 OutputStream의 다양한 하위 클래스들을 Reader와 Writer로 사용할 수 있게 한다.

궁금증

Q1. 속성을 변경하지 않기에 static method로 바꿀 수 있다.
A. static method 내부에서는 static이 아닌 field들을 사용할 수 없다. 따라서 인스턴스의 속성들을 변경하지 못하기에 필드값을 변경하는 것이 아닌 값을 받아 로직을 실행하는 메서드이면 static으로
변경 할 수 있다.

Q2. char c = ('a' - 23) 대신 char c = ((int)'a' - 23) 가능한 이유
A. 정수와 정수의 연산은 int로 묵시적 형 변환이 발생한다. char은 내부적으로 정수로 관리되기에 (int)'a'로 명시적 형 변환을 해주지 않아도 연산이 가능하다.

Q3. throw, throws 차이
A. throw는 Exception을 발생시킬 때 사용하는 키워드로 로직을 실행하다 예상치 못한 일이 발생하였을 때 Exception을 발생시켜 예외를 처리하게 한다.
throws는 메소드를 정의할 때 사용하는 키워드로 해당 메서드가 잠재적으로 발생시킬 수 있는 Exception을 알려준다.

profile
Backend Developer

0개의 댓글