Skip to content

Latest commit

 

History

History
63 lines (46 loc) · 1.84 KB

chapter-11.md

File metadata and controls

63 lines (46 loc) · 1.84 KB

11장

레시피 11.9 TODO로 완성 강제하기

  • 특정 함수나 테스트 구현을 강제할 때 사용
  • TODO 함수를 사용하면 함수가 호출될 때 NotImplementedError 를 던집니다
fun func() {
	TODO("seriouslly, finish this") // 내용도 문자열 형태로 적어줄 수 있다
} 
  • 비슷한 error() 라는 친구도 있다
  • TODO 와 비슷하지만 reason의 타입이 Any이다

레시피 11.10 Random의 무작위 동작 이해하기

  • 난수를 생성하는 클래스
  • Random 함수에 시드값을 줄 수 있다
Random().nextInt()
Random(123).nextInt()
  • 시드 값이 같은 경우 동일한 순서의 난수 값을 반환한다
  • 만약 어떤 시드를 주지 않는다면 나노타임이 들어가 정말 랜덤으로 생성된다

레시피 11.11 함수 이름에 특수 문자 사용하기

  • 백틱으로 감싸면 함수에 공백이나 특수 문자를 넣을 수 있다
  • 테스트할 때만 사용하자

레시피 11.12 자바에게 예외 알리기

  • 코틀린의 경우 unchecked 예외밖에 없지만 자바의 경우는 그렇지 않다
  • 자바에서 checked 예외를 던지는 코틀린 코드를 호출하는 경우 try catch를 사용하거나 throws를 사용하려 할 수 있다
public static void func() {
	try {
		kotlinFunc();
	} catch(IOException e) {
	}
}

public static void func() throws IOException {
	kotlinFunc();
}
  • 하지만 이럴 경우 try catch는 자바 컴파일러가 해당 예외를 던지지 않는다고 생각하기 때문에 컴파일 에러, throws는 필요 없는 구문이라는 경고가 나올 것이다
  • 이럴때는 @Throws 를 사용하면 된다
@Throws(IOException::class)
fun kotlinFunc() {
	throw IOException()
}
  • @Throws 애노테이션은 그저 자바/코틀린 통합을 위해서 존재한다.