송민준의 개발노트
코틀린 예외처리 본문
기본적인 구조는 자바의 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 |