송민준의 개발노트

코틀린 예외처리 본문

안드로이드/코틀린

코틀린 예외처리

송민준 2020. 6. 6. 20:31

기본적인 구조는 자바의  try catch와 비슷하다.

try {
	내용
} catch(e: exception) {
	handler 구문
} finally {
	finally 구문
}

차이가 있다면 각 블록의 결과를 반환한다는 것이다.

val reuturnValue: Int ? = try { parseInt(value) } catch (e: Exception) { null }

위의 코드는 returnValue 가 parseInt(value) 혹은 null이 된다.

 

코틀린에서는 Check Exception이 존재하지 않는다. 

 

예외 던지는 구문은 다음과 같다. 자바와 다른 점은 new 를 선언 안한다는 것이다.

throw Exception(" 던져 ")

엘비스 연산자를 이용해 객체의 값이 null인 경우 예외를 던지는 코드를 작성할 수 있다.

human 객체의 name 속성을 s 변수에 넣고자 하는데 null 일 경우 예외를 던지는 것이다.

val s = human.name ?: throw IllegalArgumentException("empty name")

 

코틀린은 null을 가질 수 있는 객체와 가질 수 없는 객체의 타입이 분리되어 있다.

 

// 에러
var test: String = "Kotlin"
test = null

// 에러 아님
var test: String? = "Kotlin"
test = null

객체 타입 뒤에 ? 붙여주면 되는듯

 

null을 가질 수 있는 객체의 프로퍼티에 접근 하기 위해선 다음과 같은 방법들이 존재한다.

1. if문으로 null 체크

val b: String? = getString()
val b2 = if(b != null) b.length else -1

2. Safe call

val b: String? = getString()
val b2 = b?.length

이 경우 b2는 null을 가질 수 있는 객체가 된다.

 val b2: Int? = b.length
 이거랑 비슷해지는듯

3. 엘비스 연산자

val b: String? = getString()
val b2 = b?.length ?: -1

b2 타입은 Int

 

4. !! 연산자 사용

val b: String? = null
val b2 = b!!.length

연산자는 null 갑승ㄹ 가질 수 있는 타입의 객체를 강제로 가질 수 없는 타입으로 변환해준다.

 

 

null과 관련된 우형 ppt

https://www.slideshare.net/gyumee/null-142590829

 

자바에서 null을 안전하게 다루는 방법

여러 언어에서 null 안전성을 주요 마케팅 쟁점으로 내세우면서 null 안전성이 관심을 많이 받고 있습니다. 자바에서도 null을 잘 다루어야 소프트웨어 결함을 줄이고 견고하게 만들 수 있는데 null�

www.slideshare.net

 

'안드로이드 > 코틀린' 카테고리의 다른 글

companion object(정적 변수)  (0) 2020.06.07
class와 property  (0) 2020.06.07
코틀린 for  (0) 2020.06.06
코틀린 when  (0) 2020.06.05
if-else  (0) 2020.06.04