예외처리

코틀린의 모든 예외 클래스는 최상위 예외 클래스인 Throwable을 상속한다.

자바에서는 Checked Exception은 compile Error가 발생하기 때문에 무조건 try-catch로 감싸거나, throws로 예외를 전파 해야한다.

try {
  Thread.sleep(1);
} catch (InterruptedException e) {
  //예외 처리
}

코틀린은 Checked Exception을 강제하지 않는다.

아래의 코드는 코틀린에서 컴파일 오류가 발생하지 않는다.

Thread.sleep(1);


fun main() {
  
  try {
    throw Exception()
  }catch(e: Exception) {
    println("에러 발생!") //에러 발생!
  }
  finally{
    println("finally 실행!") //finally 실행! 
  }
//kotlin은 표현식 형태로서 try catch문이 가능하다.
  val a = try {
    "1234".toInt()
  } catch (e: Exception) {
    println("예외 발생 !")
  }
  println(a) //1234
    
    //직접 Exception을 할려면 throw를 사용할 수 있다. 
    //throw Exception("예외 발생") //run창에 빨간 text로 : 예외 발생! 출력  
    val b : String? = null
    val c = b ?: failFast("a is null")
      
      println(c?.length)
    //Noting에서 발생하면 아래 코드는 실행되지 않는다.
    println("이 메세지는 출력 안됨 ")
      
  }  

fun failFast(message: String): Nothing {
  throw IllegalArgumentException(message) //throw를 리턴하게 되면 Nothing 타입을 반환 
}

 

출처 : FastCampus

'Kotlin' 카테고리의 다른 글

Kotlin.07 자바와 코틀린의 차이점  (0) 2023.04.02
Kotlin.06 클래스와 프로퍼티  (0) 2023.04.02
Kotlin 04. 널 참조  (0) 2023.04.02
Kotlin 03. 흐름제어  (0) 2023.04.02
Kotlin 02. 함수  (0) 2023.04.02

+ Recent posts