실행 흐름이 도달할수 없는 구역까지 나타내기 위한 특수한 타입.

Nothing 은 인스턴스가 없다.

주로 함수가 정상적으로 끝나지 않는다 라는것을 명시적으로 표현하는 타입이다.

Nothing 은 return  타입이나 인자(parameter)로만 쓸수있고 변수사용은 불가능하다. 어떤 함수에서 중간에 예외로 던지는 로직이 있을때 함수가 정상적으로 끝날수 없다. 그럴때 return 타입을 Nothing 으로 두면 compiler 가 정상종료되지 않는 함수인것을 컴파일타임때 알 수 있다.

fun failFunction(msg: String) : Nothing = throw IllegalStateException(msg)

fun getUndefinedInfo(obj : Car) {
    val infor = Car.model ?: failFunction("unkown model")
    return infor.model
}

fun main(args: Array){
    val runFunction = failFunction("no run")
}
0