私はこれを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では、 チェックされた例外はありません 、例外を宣言する必要はなく、例外をキャッチする必要はありませんが、もちろんできます。 Javaクラスから派生する場合でも、メソッドthrows
の例外を宣言する必要はありません。
@Throws(SomeException::class)
はJava相互運用性の単なる平均であり、Java署名にthrows
を使用して関数を記述することができるため、 Javaでは、例外を処理することができます(そして必要です)。
代わりに、パブリックAPIの例外は、 KDoc with @throws
タグ で文書化する必要があります。
Javaでは、関数は次のようになります
void foo() throws IOException{
throw new IOException();
}
しかし、Kotlinでは、以下のような注釈を追加する必要があります
@Throws(IOException::class)
fun foo() {
throw IOException()
}
ソース kotlinlang.org