Kotlin 例外

Kotlinでプログラムを実行した時、例外が生じる場合があるかと思います。

Kotlinで例外が生じると、アプリケーションが落ちる原因となります。

そこでtry-catchを使用することで例外が生じて、アプリケーションが落ちるのを防ぐことができます。

ここではKotlinでの例外への対処の仕方を見ていきましょう。

このページで解説すること

1.例外が発生する例

2.try-catchを使用してエラー発生を防ぐ

1.例外が発生する例

try-catchを使用して例外を防ぐ方法を見ていく前に、例外が発生した時、Kotlinではどのようにエラー表示されるのでしょうか。

以下のコードはString型をInt型に変換するコードです。

fun main(args: Array<String>) {

val message: String = "こんにちは"

val a: Int = message.toInt()

println("number = ${a}")

}

表示結果は以下の通りになります。

Exception in thread "main" java.lang.NumberFormatException: For input string: "こんにちは"

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:580)

at java.lang.Integer.parseInt(Integer.java:615)

at Simplest_versionKt.main(Simplest version.kt:3)

上記ではエラーが起きたというメッセージが表示されているのですが、詳しく内容を見ていきましょう。

1行目の内容を要約するとString型「こんにちは」をInt型に変換できませんと記述されています。

5行目には「Simplest version.kt:3」と記述されていますが、これはSimplest versionの上から3行目で問題が生じているということを意味しています。

問題の箇所が分かったので、上から3行目を見てみましょう。

3行目のコードは「val a: Int = message.toInt()」となっています。

3行目はString型のmessageという変数をInt型に変換するというコードになっております。

Int型は「-2147483647から2147483647」までの整数を扱っているので、「こんにちは」という文字列はInt型に変換できないということが推測できます。

このように、String型の「こんにちは」はInt型に変換できないことがエラーの原因だということが分かりました。

2.try-catchを使用してエラー発生を防ぐ

上記のコードではエラーが生じ、エラーの原因を突き止めることができました。

ありとあらゆることを想定してプログラムを組んでも、エラーが発生することもあります。

それではtry-catchを使用してコードを記述していきましょう。

fun main(args: Array<String>) {

val message: String = "こんにちは"

try {

val a: Int = message.toInt()

println("number = ${a}")

} catch (e: NumberFormatException) {

println("「${message}」はInt型に変換できません")

}

}

表示結果は以下の通りになります。

「こんにちは」はInt型に変換できません

上記のようにtry-catchを使用することでエラーが生じることなく、「「こんにちは」はInt型に変換できません」と表示されました。

3行目から6行目のtry {}内のプログラムが実行され、例外が生じました。

例外が生じた原因は「1.例外が発生する例」で解説した通りです。

例外が生じたので、6行目から8行目のcatch{}内のプログラムが実行され、「「こんにちは」はInt型に変換できません」と表示されるという流れになっています。

このようにtry-catchを使用することで例外が発生した時に自分が設定したエラー表示をさせることができます。

ポイント

・プログラムで想定されていないエラーが生じるとアプリケーションが落ちる原因になります

・try-catchを使用することで想定しないエラーでアプリケーションが落ちるのを防ぐことができます

2019年11月21日