在 Kotlin 的方法中抛出异常
throws Exception in a method with Kotlin
我正在尝试将此 Java 代码转换为 Kotlin:
public class HeaderInterceptor implements Interceptor {
@Override public Response intercept(Chain chain) throws IOException {
return null;
}
}
问题是,当我实现这些方法时,我得到了类似
的东西
class JsonHeadersInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain?): Response? {
throw UnsupportedOperationException()
}
}
我发现的关于在 Kotlin 中抛出异常的唯一信息是 THIS。
除了把问号去掉,因为没必要,为什么不对IOException
做同样的处理?处理这种情况的最佳方法是什么?
在 Kotlin 中,there's no checked exceptions,无需声明任何异常,也不会强制您捕获任何异常,尽管您当然可以。即使从 Java class 派生,您也不必声明方法 throws
.
的异常
@Throws(SomeException::class)
仅用于 Java 互操作性,它允许在 Java 签名中使用 throws
编写一个函数,以便在 Java将有可能(并且有必要)处理异常。
相反,public API 例外情况应记录在 KDoc with @throws
tag。
在Java中你的函数是这样的
void foo() throws IOException{
throw new IOException();
}
但在 Kotlin 中,您可以添加如下注释以强制其他 Java 类 捕获它。但是,正如其他答案所指出的那样,它在 Kotlin 类.
中没有任何意义
@Throws(IOException::class)
fun foo() {
throw IOException()
}
我正在尝试将此 Java 代码转换为 Kotlin:
public class HeaderInterceptor implements Interceptor {
@Override public Response intercept(Chain chain) throws IOException {
return null;
}
}
问题是,当我实现这些方法时,我得到了类似
的东西class JsonHeadersInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain?): Response? {
throw UnsupportedOperationException()
}
}
我发现的关于在 Kotlin 中抛出异常的唯一信息是 THIS。
除了把问号去掉,因为没必要,为什么不对IOException
做同样的处理?处理这种情况的最佳方法是什么?
在 Kotlin 中,there's no checked exceptions,无需声明任何异常,也不会强制您捕获任何异常,尽管您当然可以。即使从 Java class 派生,您也不必声明方法 throws
.
@Throws(SomeException::class)
仅用于 Java 互操作性,它允许在 Java 签名中使用 throws
编写一个函数,以便在 Java将有可能(并且有必要)处理异常。
相反,public API 例外情况应记录在 KDoc with @throws
tag。
在Java中你的函数是这样的
void foo() throws IOException{
throw new IOException();
}
但在 Kotlin 中,您可以添加如下注释以强制其他 Java 类 捕获它。但是,正如其他答案所指出的那样,它在 Kotlin 类.
中没有任何意义@Throws(IOException::class)
fun foo() {
throw IOException()
}