try-catchブロック

Kotlinにおける「try-catchブロック」は、例外が発生する可能性のあるコードを安全に実行し、エラー時の処理を記述するための構文です。Javaと似た構文を持ちながらも、Kotlin特有の表現力を活かして、例外処理をより柔軟かつ簡潔に行うことができます。


1. 基本構文

kotlin
try { // 例外が発生する可能性のある処理 } catch (e: ExceptionType) { // 例外が発生した場合の処理 } finally { // 例外の有無にかかわらず実行される処理(省略可能) }
  • try ブロック内には、実行時に例外が発生する可能性のある処理を記述します。

  • catch ブロックでは、特定の型の例外を捕捉して適切な対処を行います。

  • finally ブロックは例外の有無に関わらず必ず最後に実行され、リソースの解放などに使用されます。


2. 実例

kotlin
fun divide(a: Int, b: Int): Int { return try { a / b } catch (e: ArithmeticException) { println("0で割ることはできません") 0 } finally { println("処理終了") } }

この例では、a / bb が 0 の場合、ArithmeticException が発生し、それを catch ブロックで捕捉します。finally ブロックは必ず実行されます。


3. Kotlinにおけるtryは「式」である

Kotlinでは try-catch は**式(expression)**として使用できるため、結果を変数に直接代入することができます。

kotlin
val result = try { someFunction() } catch (e: Exception) { "エラー: ${e.message}" }

このように、try ブロックの評価結果を result に代入することが可能であり、Kotlinの関数型プログラミング的な特徴を活かせます。


4. 複数のcatchブロック

複数の種類の例外に対応したい場合、catch ブロックを複数記述できます。

kotlin
try { // 処理 } catch (e: IOException) { // IOエラー処理 } catch (e: NumberFormatException) { // 数値変換エラー処理 }

5. 例外を再スローする

捕捉した例外を再度スローしたい場合は、throw キーワードを使います。

kotlin
try { // 処理 } catch (e: Exception) { println("ログ出力: ${e.message}") throw e // 呼び出し元へ再スロー }

まとめ

  • try-catch はKotlinでも基本的な例外処理機構。

  • Kotlinでは式として使えるため、値を返すことも可能。

  • finally を使うことで確実な後処理ができる。

  • catch は複数書けるため、例外の種類に応じた対応が可能。

生成日:2025/05/04