Kotlin, 6. 안전과 예외

이도현·2023년 8월 10일
0

Kotlin 공부

목록 보기
6/20

1. null

  • 어플리케이션의 오류 중 많은 부분이 null로 인한 크래시
  • 변수가 null을 허용하는지(null 가능)
  • 허용하지 않는지(null 불가능) 지정
  • 디폴트로 허용하지 않으미

2. 명시적 null 타입

  • 변수 선선 시 타입 뒤에 ? 지정
    - null 가능 타입 public fun reaLine(): String ?
fun main(args: Array<String>) {
  var beverage = readLine()
  beverage = null // 에러가 아님
  println(beverage)
}

3. 안전호출연산자: ?

?

null이 아니면 . 이후 실행
null이면 실행하지 않고 null return

fun main(args: Array<String>) {
  var beverage = readLine()?.capitalize()
  println(beverage)
}

4. 안전 호출 연산자: let

  • 안전 호출 연산자와 함께 let 함수 사용

    let 함수

  • 매개변수가 1개인 함수 -> it 사용
  • it은 안전 호출 연산자를 사용한 객체
fun main(args: Array<String>) {
  var beverage = readLine()?.let {
    if(it.isNotBlank()) {
      it.capitalize()
    } else {
      "맥주"
    }
  }
  println(beverage)
}

5. non-null연산자: !!

  • null이 될 수 없다는 것을 단언
  • 런타임시 NullPointerExceoption 예외 발생 가능

    개발자 책임

fun main(args: Array<String>) {
  var beverage = readLine()!!.capitalize()
  println(beverage)
}

6. null값인지 if로 검사

fun main(args: Array<String>) {
  var beverage = readLine()
  if( bervage != null) {
  beverage = beverage.capitalize()
  } else {
  print("beverage가 null입니다!")
  }
  println(beverage)
}

7. 복합 연산자

  • ?: (엘비스 연산자)
    • 왼쪽 피연산자의 결과가 null 이면 오른쪽의 피연산자를 실행
  • null이 아니면 왼쪽 피연산자의 결과를 반환
  • 주로 디폴트값 처리에 사용
fun main(args: Array<String>) {
  var beverage = readLine()
  if( bervage != null) {
  	beverage = beverage.capitalize()
  } else {
  	print("beverage가 null입니다!")
  }
  
  val beverageServed: String = beverage ?: "맥주"
  println(beverageServed)
}
profile
좋은 지식 나누어요

0개의 댓글