簡體   English   中英

使用 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 中, 沒有受檢異常,不需要聲明異常,並且您不會被迫捕獲任何異常,當然,您可以。 即使從 Java 類派生,您也不必聲明方法throws

@Throws(SomeException::class)僅用於 Java 互操作性,它允許編寫帶有 Java 簽名的throws的函數,以便在 Java 中可以(並且必須)處理異常。

相反,公共 API 異常應該@throws標簽記錄在KDoc 中

Java 中你的函數是這樣的

void foo() throws IOException{
    throw new IOException();
}

但是在Kotlin 中,您可以添加如下所示的注釋來強制其他 Java 類捕獲它。 但是,正如其他答案所指出的那樣,它在 Kotlin 類中沒有任何意義。

@Throws(IOException::class)
fun foo() {
    throw IOException()
}

來源kotlinlang.org

Kotlin中的所有異常類都是Throwable類的后代

@Throws(IOException :: class)在方法之前使用此行

還可以像這樣使用throw Exception(“ H​​i There!”)

查看此以獲得詳細說明https://kotlinlang.org/docs/reference/exceptions.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM