Kotlinのtry式とは?初心者でもわかる例と使い方をやさしく解説
生徒
「先生、Kotlinのtryって、例外処理だけに使うものなんですか?」
先生
「いい質問ですね。実はKotlinでは、tryは“式”としても使えるんです。」
生徒
「“式”ってなんですか?初めて聞きました……」
先生
「大丈夫、初心者でもわかるように、これからやさしく解説しますね!」
1. Kotlinのtryは“文”ではなく“式”としても使える
Kotlin(コトリン)では、エラーを処理するときにtryを使いますが、それだけではありません。tryは「式(しき)」としても使えるのです。
ここでいう「式」とは、値(あたい)を返すものを意味します。たとえば、1 + 1という計算は「2」という結果を返すので、これも「式」です。
try式も同じように、何かの結果を返すことができるので、val(変数の定義)などにも使えるんです。
2. try式の基本的な書き方
それでは、Kotlinでtry式を使った簡単な例を見てみましょう。
fun main() {
val result = try {
10 / 2
} catch (e: Exception) {
0
}
println("計算結果は $result です")
}
このプログラムでは、tryブロックの中で10 / 2を計算し、問題がなければその結果(5)がresultに入ります。
もし計算中にエラー(例外)が発生した場合は、catchブロックが実行されて、0が返される仕組みです。
計算結果は 5 です
3. try式は変数代入に便利
try式を使うことで、エラーがあっても安全に値を設定できます。例えば、ユーザーが入力した数字を整数に変換したいときにも使えます。
fun main() {
val input = "123"
val number = try {
input.toInt()
} catch (e: NumberFormatException) {
-1
}
println("変換結果は $number です")
}
この例では、文字列"123"を数値に変換しています。toInt()で失敗するとcatchに入り、-1が代入されます。
変換結果は 123 です
4. try式でのfinallyブロックの扱い
try式にはfinallyも使えますが、finallyは結果には影響しません。必ず最後に実行される処理を書くだけです。
fun main() {
val result = try {
10 / 2
} catch (e: Exception) {
0
} finally {
println("後処理を行います")
}
println("結果は $result")
}
この例では、finallyの中のprintlnは実行されますが、resultの値には関係ありません。
後処理を行います
結果は 5
5. try式の中で関数を呼び出すこともできる
さらに応用として、try式の中で関数を呼び出すことも可能です。
fun safeDivide(a: Int, b: Int): Int {
return try {
a / b
} catch (e: ArithmeticException) {
-1
}
}
fun main() {
val result = safeDivide(10, 0)
println("安全な割り算の結果: $result")
}
このコードでは、0で割ろうとしてもエラーを出さずに-1を返します。こうすることで、安全にプログラムを続けられます。
安全な割り算の結果: -1
6. Javaとの違い:Kotlinはtryもreturnも柔軟に使える
Javaではtryは「文」としてしか使えないので、returnの中に書くのは少し面倒です。でも、Kotlinではtry式として扱えるので、関数の中で直接return try { ... }と書けます。
fun getNumber(input: String): Int {
return try {
input.toInt()
} catch (e: NumberFormatException) {
-1
}
}
このように、関数の戻り値としてtryを直接使えるのがKotlinの魅力です。