82

この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、同じように処理しないのはなぜですか? この状況を処理する最善の方法は何ですか?

4

2 に答える 2

140

Kotlin では、チェック済みの例外はなく、例外を宣言する必要もなく、例外を強制的にキャッチする必要もありませんが、もちろん可能です。Java クラスから派生する場合でも、メソッドの例外を宣言する必要はありませんthrows

@Throws(SomeException::class)Java の相互運用性を目的としておりthrows、Java 署名を使用して関数を記述できるため、Java で例外を処理することが可能 (かつ必要) になります。

代わりに、公開 API の例外は、タグを使用してKDoc@throwsに文書化する必要があります。

于 2016-04-10T10:54:23.510 に答える