检查Kotlin中异常
如上所述,Kotlin 没有受检异常。即像下面像这样的 Kotlin 函数:
class CheckKotlinException {
fun thisIsAFunWithException() {
throw Exception("I am an exception in kotlin")
}
}
在Java中调用,编译器是不会检查这个异常的:
@Test
public void testCheckKotlinException() {
CheckKotlinException cke = new CheckKotlinException();
cke.thisIsAFunWithException();// Java编译器不检查这个Kotlin中的异常
}
当然,在运行时,这个异常还是会抛出来。然后,如果我们想要在 Java 中调用它并捕捉这个异常,我们可以给Kotlin中的函数加上注解@Throws(Exception::class)
, 就像下面这样:
@Throws(Exception::class)
fun thisIsAnotherFunWithException() {
throw Exception("I am Another exception in kotlin")
}
然后,我们在Java中调用的时候,Java编译器就会检查这个异常:
最后,我们的代码就需要捕获该异常并处理它。
完整的示例代码如下:
package com.easy.kotlin
class CheckKotlinException {
fun thisIsAFunWithException() {
throw Exception("I am an exception in kotlin")
}
@Throws(Exception::class)
fun thisIsAnotherFunWithException() {
throw Exception("I am Another exception in kotlin")
}
}
测试代码:
package com.easy.kotlin;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class CheckKotlinExceptionTest {
@Test
public void testCheckKotlinException() {
CheckKotlinException cke = new CheckKotlinException();
cke.thisIsAFunWithException();// Java编译器不检查这个Kotlin中的异常
// Kotlin中显示声明了异常,Java编译器会检查这个异常
// cke.thisIsAnotherFunWithException();
try {
cke.thisIsAnotherFunWithException();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Nothing 类型
在Kotlin中Nothing
类型是一个特殊的类型,它在 Java 中没有的对应的类型。在使用 Nothing
参数的地方会生成一个原始类型。
例如下面的Kotlin代码:
fun emptyList(): List<Nothing> = listOf()
对应到Java代码中是:
@NotNull
public final List emptyList() {
return CollectionsKt.emptyList();
}
Kotlin中的List<Nothing>
映射为原生类型List
。
当前内容版权归 JackChan1999 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 JackChan1999 .