Kotlin 예외 처리 정리
11 Oct 2022패스트 캠퍼스 실무 프로젝트로 배우는 Kotlin & Spring 강의 정리
예외 처리
- 자바의 try-with-resources
AutoCloseable
인터페이스를 구현하는 클래스는 try 구문에서 선언된 객체의 close 메소드를 호출하게 됨
use
- 내부에서 finally 구문에서 특정 조건에 따라 close 메소드 호출하도록 처리
import java.io.FileWriter
fun main() {
FileWriter("text.txt")
.use {
it.write("Hello Kotlin")
}
}
- 기본 예외 처리
fun getStr(): Nothing = throw Exception("Exception")
fun main() {
val result = try {
getStr()
} catch (e: Exception) {
println(e.message)
"default"
}
println("result = $result")
// Exception
// result = default
}
runCatching
을 이용한 예외 처리- 함수형 처리 가능
getOrNull()
: 성공하면 결과값, 예외 발생하면 null 반환exceptionOrNull()
: 성공하면 null, 예외가 발생하면 Throwable 타입의 예외 반환getOrDefault()
: 성공하면 결과값, 예외 발생하면 지정한 기본값 반환getOrElse()
: 성공하면 결과값 반환, 예외 발생하면 수신자 객체로 Throwable 받을 수 있어 내부 함수의 결과값 반환getOrThrow()
: 성공하면 결과값 반환, 예외를 발생시킴map()
: 성공할 경우 원하는 값으로 변경 가능하며 결과값은Result<>
. 위의 메서드 중에서 사용해야 결과값 사용 가능mapCatching()
: map 내부에서 예외가 발생할 경우, 이후에 getOrDefault 등의 메서드에서 처리 가능recover
: 성공할 경우 동작하지 않고 예외 발생할 경우 동작recoverCatching()
: 함수 내에서 예외가 발생할 경우, 이후 메서드에서 처리 가능
fun getStr(): Nothing = throw Exception("Exception")
fun main() {
val result = runCatching { getStr() }
.getOrElse {
println(it.message)
"default"
}
println("result = $result")
// Exception
// result = default
}