안드로이드/KOTLIN
[Kotlin] Kotlin <--> Java 의 예외처리 (+ 지정 키워드 escape 하여 사용하기)
개굴이모자
2023. 5. 7. 23:26
반응형
Java 의 예외 처리
Java 의 경우에는 아래와 같이 try catch 로 특정 checked exception 을 걸어 처리하도록 필수하고 있다.
public class JavaThrow {
public void throwIOException() throws IOException {
throw new IOException();
}
}
public static void main() {
JavaThrow javaThrow = new JavaThrow();
try {
javaThrow.throwIOException();
} catch (IOException e) { //checked Exception
e.printStackTrace();
}
}
Kotlin 의 예외 처리, Java 의 Exception 처리하기
코틀린에서는 checked exception 이 존재하지 않기 때문에, 코드 작성 시에 아래와 같이 try catch 등의 별도 처리를 강제하지는 않는다.
class KotlinThrow {
fun throwIOException() {
throw IOException()
}
@Throws(IOException::class)
fun throwsIOExceptionWithAnnotation() {
throw IOException()
}
}
fun main() {
val javaThrow = JavaThrow()
javaThrow.throwIOException()
val kotlinThrow = KotlinThrow()
kotlinThrow.throwIOException()
}
Java 에서 Kotlin 의 예외 처리하기
그리고, 코틀린으로 작성된 throw Exception 이 가능한 함수들의 처리 또한 자바에서 호출 시 try/catch 의 처리가 강제되지 않는다.
상단의 KotlinThrow 를 Java 의 main 함수 하위에서 호출해보자.
public static void main() {
JavaThrow javaThrow = new JavaThrow();
try {
javaThrow.throwIOException();
} catch (IOException e) { //checked Exception
e.printStackTrace();
}
//KotlinThrow 클래스의 호출
KotlinThrow kotlinThrow = new KotlinThrow();
kotlinThrow.throwIOException();
//try catch 를 감싸려하면 에러가 발생하게 되는데 그 이유는 throws 를 사용하지 않고
//코틀린에서는 throw 를 사용하여 별도의 예외 전파를 사용하지 않고 있기 때문이다.
//따라서, throws 어노테이션을 별도로 사용할 경우에만 try/catch 로 전파를 받을 수 있다.
//throws annotation 을 붙인 throwsIOExceptionWithAnnotation 사용
try {
kotlinThrow.throwsIOExceptionWithAnnotation();
} catch (IOException e) {
e.printStackTrace();
}
}
+ Kotlin 의 지정 키워드를 Java 에서 사용할 경우
만일 Java 에서 함수 이름을 is, in 등 Kotlin 에서 기본으로 지정된 키워드로 사용하고 있을 경우는 어찌 사용해야할까?
Kotlin 에서는 in 과 같이 back tic 으로 감싸 escape 하여 사용할 수 있다.
do while, when 등 기본적으로 사용되는 단어들에 대해 escape 를 할 수 있기 때문에 자바에 비해 더 유연성 있게 사용할 수 있다.
fun main() {
val sampleClass = SampleClass()
sampleClass.`in`
}
반응형