ces*_*rds 32 java kotlin kotlin-extension
我正在尝试将此Java代码转换为Kotlin:
public class HeaderInterceptor implements Interceptor {
@Override public Response intercept(Chain chain) throws IOException {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我实现这些方法时,我会得到类似的东西
class JsonHeadersInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain?): Response? {
throw UnsupportedOperationException()
}
}
Run Code Online (Sandbox Code Playgroud)
我发现有关在Kotlin中抛出异常的唯一信息就是这个.
删除问号的一部分,因为没有必要,为什么它不会IOException以同样的方式处理?处理这种情况的最佳方法是什么?
hot*_*key 72
在Kotlin中,没有经过检查的异常,不必声明任何异常,并且您不会被迫捕获任何异常,当然,您可以.即使从Java类派生,您也不必声明方法的异常throws.
@Throws(SomeException::class)它只是Java互操作性的一种手段,它允许用throwsJava签名编写一个函数,这样在Java中就可以(并且必要)处理异常.
相反,公共API异常应记录在带有@throws标记的KDoc中.
Rad*_*esh 17
在Java中,您的函数是这样的
void foo() throws IOException{
throw new IOException();
}
Run Code Online (Sandbox Code Playgroud)
但是在Kotlin中,您可以添加如下所示的注释,以强制其他Java类捕获它。但是,正如其他答案所指出的那样,它在Kotlin类中没有任何意义。
@Throws(IOException::class)
fun foo() {
throw IOException()
}
Run Code Online (Sandbox Code Playgroud)
资料来源kotlinlang.org
| 归档时间: |
|
| 查看次数: |
23465 次 |
| 最近记录: |