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 애노테이션은 그저 자바/코틀린 통합을 위해서 존재한다.