Chandroid
Android Development Diary
Chandroid
전체 방문자
오늘
어제
  • 분류 전체보기
    • Today I Learned (TIL)
    • Android
      • Android Weekly
      • Android 13
      • Android Debug Bridge (ADB)
      • Library
      • View
      • Jetpack
      • Gist
    • Kotlin
      • Docs
      • Clean Code
    • Object-Oriented Programming
    • Etc
      • 정보처리기사 실기
      • 주절주절

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • DiffUtil
  • Glide
  • Android Debug Bridge
  • MVVM
  • Realm
  • Solid
  • kotlin
  • generics
  • Android 13
  • Sealed classes
  • OOP
  • Kotlin Docs
  • customview
  • DataBinding
  • RecyclerView
  • til
  • Today I Learned
  • Extensions
  • clean code
  • Database
  • ADB
  • GIST
  • Agile Software
  • Data classes
  • Android

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chandroid

Android Development Diary

[Kotlin Docs] Exceptions
Kotlin/Docs

[Kotlin Docs] Exceptions

2022. 1. 20. 13:52

본 글은 https://kotlinlang.org/docs/home.html 를 기반으로 작성자 마음대로 번역한 글입니다.
오역 & 의역이 빈번하며 모든 질문 및 태클 환영합니다!
2022-01-20 기준으로 작성되었습니다.

Exception classes

코틀린의 모든 예외 클래스들은 Throwable 클래스를 상속합니다. 모든 예외는 message와 stack trace, 그리고 부가적으로 cause가 있습니다. 

 

예외 객체를 발생시키기 위해서 throw 표현식을 사용하세요.

 

 

예외 처리를 위해서, try ... catch 표현식을 사용하세요.

 

 

catch 블록은 없을 수도 있으며, finally 블록은 생략될 수 있습니다. 그러나 적어도 하나의 catch 혹은 finally 블록이 요구됩니다.

 

- Try is an expression

try는 리턴 값을 가질 수 있는 표현식입니다.

 

 

try 표현식에서 리턴된 값은 try 블록 혹은 catch 블록(들)의 마지막 구문입니다. finally 블록은 표현식의 결과에 영향을 미치지 않습니다.

 


Checked exceptions

코틀린에는 checked exception이 존재하지 않습니다. 여기엔 많은 이유가 있으나 그 이유를 설명하는 간단한 예를 보여드리겠습니다.

 

다음은 StringBuilder 클래스에 의해 구현되는 JDK의 인터페이스 예시입니다.

 

 

이 시그니쳐는 문자열을 어딘가에(String Builder, 로그나 콘솔 종류, etc.) 추가할 때마다 IOException을 처리해야한다는 것을 알려줍니다. 왜냐하면 구현이 UI 작업에 의해 수행될 수 있기 때문입니다. (Writer또한 Appendable을 구현합니다.) 그 결과로 이곳 저곳에서 이런 코드가 됩니다.

 

 

이것은 좋지 않습니다. Effective Java, 3rd Edition↗을 보세요, 항목 77: 예외를 무시하지 마라 

 

Bruce Eckel은 checked exception에 관해서 다음과 같이 얘기합니다.

소규모 프로그램을 살펴볼 때, 예외 사항에 대한 요구는 개발자의 생산성과 코드의 품질을 높일 수 있지만, 대규모 소프트웨어 프로젝트의 경험은 다른 결과를 제시합니다 - 생산성이 저하되고 코드의 품질이 거의 증가하지 않습니다.

 

그리고 이 문제에 대해 추가적인 의견들이 있습니다.

  • Java's checked exceptions were a mistake↗ (Rod Waldhoff)
  • The Trouble with Checked Exceptions↗ (Anders Hejlsberg)

만약 Java, Swift, 또는 Objective-C에서 코틀린 코드를 호출할 때 가능한 예외를 알려주기 원한다면, @Throws 어노테이션을 사용할 수 있습니다. 어노테이션의 사용에 대해 더 자세한 사항은 for Java↗ and for Swift and Objective-C↗ 를 확인하세요.

 


The Nothing type

코틀린에서 throw는 표현식입니다, 따라서 엘비스 표현식의 일부와 같이 사용할 수 있습니다.

 

 

throw 표현식은 Nothing 타입을 가집니다. 이 타입은 값을 가지고 있지 않으며 절대로 도달할 수 없는 코드의 위치를 표시하는데 사용됩니다. 자신의 코드에서 절대로 리턴하지 않는 함수를 표시하기 위해 Nothing을 사용할 수 있습니다:

 

 

이 함수를 호출할 때, 컴파일러는 실행이 호출을 넘어 계속되지 않는다는 것을 인식합니다.

 

 

타입 추론을 다룰때도 이 형식에 직면할 수 있습니다. 이 타입의 nullable 변형은 null 한가지 값만 가질 수 있는 Nothing?입니다. 타입 추론의 값을 초기화할때 null을 사용하고, 구체적인 타입을 결정할 다른 정보가 없다면 컴파일러는 Nothing? 타입으로 추론합니다:

 

 


Java interoperability

자바와의 상호 운영성에 대한 정보를 확인하려면 Java interoperability page↗의 exception 섹션을 확인하세요.

 


https://kotlinlang.org/docs/exceptions.html
 

Exceptions | Kotlin

 

kotlinlang.org

 

저작자표시 비영리 (새창열림)

'Kotlin > Docs' 카테고리의 다른 글

[Kotlin Docs] Classes  (0) 2022.01.24
[Kotlin Docs] Packages and imports  (0) 2022.01.20
[Kotlin Docs] Returns and jumps  (0) 2022.01.19
[Kotlin Docs] Conditions and loops  (0) 2022.01.19
[Kotlin Docs] Type checks and casts  (0) 2022.01.19
    Chandroid
    Chandroid

    티스토리툴바