Skip to Content
Java에서 Kotlin으로
book

Java에서 Kotlin으로

by Duncan McGregor, Nat Pryce
May 2025
Beginner to intermediate
424 pages
7h 7m
Korean
O'Reilly Media, Inc.
Book available
Content preview from Java에서 Kotlin으로

21장. 값의 예외

이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com

19장에서는 Kotlin의 오류 처리 전략과 Java의 예외에서 보다 기능적인 기법으로 리팩터링하는 방법을 살펴보았습니다. 사실 대부분의 코드는 오류가 발생하지 않기를 바라며 오류를 무시합니다. 더 잘할 수 있을까요?

마케팅에 새로 온 누군가가 20장에서마지막으로 본 스프레드시트 , 즉고가치 고객 점수를 생성하는 스프레드시트를 수정하기 시작했습니다. 자세히는 모르겠지만 구문 분석을 깨는 파일을 계속 내보내고 스택 추적이 무엇인지 설명해 달라고 합니다. 양쪽 모두 약간 당황스러워져서 케이크가 마르기 시작했습니다. 더 이상 동기가 될 만한 것이 없을까요?

네, 그럴 수도 있습니다. 마케팅팀이 파일을 서버에 저장하면 자동으로 요약본을 작성할 수 있도록 무인 작업을 작성해 달라는 요청도 받았습니다. 이러한 스택 추적을 해석할 사람이 없으면 오류를 제대로 보고할 수 있는 방법을 찾아야 할 것 같습니다.

무엇이 잘못될 수 있는지 파악하기

여기 코드가 그대로 남아 있습니다:

fun Sequence<String>.toHighValueCustomerReport(): Sequence<String> {
    val valuableCustomers = this
        .withoutHeader()
        .map(String::toCustomerData)
        .filter { it.score >= 10 }
        .sortedBy(CustomerData::score)
        .toList()
    return sequenceOf("ID\tName\tSpend") +
        valuableCustomers.map(CustomerData::outputLine) +
        valuableCustomers.summarised()
}

private fun List<CustomerData>.summarised(): String =
    sumByDouble { it.spend }.let { total ->
        "\tTOTAL\t${total.toMoneyString()}"
    }

private fun Sequence<String>.withoutHeader() = drop(1)

internal fun String.toCustomerData(): CustomerData =
    split("\t").let { parts ->
        CustomerData(
            id = parts[0],
            givenName = parts[1],
            familyName = parts[2],
            score = parts[3].toInt(),
            spend = if (parts.size == 4) 0.0 else parts[4].toDouble()
        )
    }

private val CustomerData.outputLine: String
    get() = "$id\t$marketingName\t${spend.toMoneyString()}"

private fun Double.toMoneyString() = this.formattedAs("%#.2f" ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

코드 밖 커뮤니케이션

코드 밖 커뮤니케이션

재퀴 리드
실리콘밸리 리더십

실리콘밸리 리더십

김정혜, 마이클 롭

Publisher Resources

ISBN: 9798341656055Supplemental Content