私はコトルを学び始めました。私は例外を処理する方法を理解できません。私はチェックされたものがないことを知っていますが、とにかく、私のメソッドがそれをスローするとどうしたらいいですか?例:Kotlinで例外を処理する方法は?
fun test(a: Int, b: Int) : Int {
return a/b
}
私が0で割ると、ArithmeticExceptionが発生します。だから私はそのようなことをどう扱うべきですか?
私はコトルを学び始めました。私は例外を処理する方法を理解できません。私はチェックされたものがないことを知っていますが、とにかく、私のメソッドがそれをスローするとどうしたらいいですか?例:Kotlinで例外を処理する方法は?
fun test(a: Int, b: Int) : Int {
return a/b
}
私が0で割ると、ArithmeticExceptionが発生します。だから私はそのようなことをどう扱うべきですか?
ArithmeticException
は実行時の例外なので、Javaではチェックされません。それを処理するための選択肢はあまりにもJavaのと同じです:
try-catch
ブロックでそれをラップします。あなたはそれが起こった場所からスタックのどこにでもキャッチして、あなたは何も宣言をthrows
する必要はありません。何Kotlinに例外がチェックされますので、あなたは、そこにthrows
キーワードがないかではありませんが、あなたはKotlinとJavaを混合している場合、あなたはあなたのJavaコードでチェック例外の例外処理を強制したいですあなたのメソッドに@Throws
注釈で注釈を付けることができます。
例外についての公式のKotlinドキュメントを参照してください。hereプラスとして
kotlinでのtry-catachは、あなたのコードは次のようになります値を返すことができるので:
fun test(a: Int, b: Int) : Int {
return try {a/b} catch(ex:Exception){ 0 /*Or any other default value*/ }
}
あなたは例外をencounting時にデフォルト値を返すために、拡張機能を書き込むことができます。
fun <T> tryOrDefault(defaultValue: T, f:() -> T): T {
return try {
f()
} catch (e: Exception) {
defaultValue
}
}
fun test(a: Int, b: Int) : Int = tryOrDefault(0) {
a/b
}
'try-catch'は、Javaと同じように動作します。例外についてのドキュメント[here](https://kotlinlang.org/docs/reference/exceptions.html)でドキュメントを見ることができます。 – zsmb13
@ zsmb13だから、私は "チェックされた"例外を処理することができる、ちょうどメソッドシグネチャのスローを書き込まないでください?そんなに書いても大丈夫ですか?もしそうなら、plsは答えとしてそれを書いて、私はこの質問を閉じるでしょう。 – VolodymyrH