カテゴリ: Kotlin 更新日: 2026/01/12

KotlinでAPI通信のエラーを安全に処理する方法を解説!初心者向けエラーハンドリングの基本

KotlinのAPI通信でエラーハンドリングを行う基本
KotlinのAPI通信でエラーハンドリングを行う基本

先生と生徒の会話形式で理解しよう

生徒

「KotlinでAPIにアクセスしたときに、失敗したらどうなるんですか?」

先生

「通信に失敗したり、エラーが返ってきたときには、きちんと対応する必要があります。それをエラーハンドリングといいます。」

生徒

「それって難しい処理ですか?」

先生

「いえいえ、コツをつかめば簡単ですよ。初心者向けにゆっくり解説しますね。」

1. KotlinでAPI通信を行う基本

1. KotlinでAPI通信を行う基本
1. KotlinでAPI通信を行う基本

KotlinでWeb API(ウェブエーピーアイ)と通信するには、通常OkHttpというライブラリを使います。APIとは、外部のサービスと情報をやりとりするための「取り決め」で、天気予報アプリやSNSアプリなどで使われます。

しかし、インターネット通信は常に成功するとは限りません。たとえば、ネットが切れていたり、サーバーが混雑していたりすると、うまく通信できないことがあります。

2. エラーハンドリングとは?

2. エラーハンドリングとは?
2. エラーハンドリングとは?

「エラーハンドリング」とは、何か問題が起きたときにプログラムが落ちたり止まったりしないよう、安全に処理することをいいます。

たとえば、手紙を出したのに返事がなかったとき、「届かなかったのかな? もう一度確認しよう」と考えるのと同じように、プログラムでも「うまくいかなかったとき」に備えておくことが大切です。

3. try-catchでエラーを捕まえる

3. try-catchでエラーを捕まえる
3. try-catchでエラーを捕まえる

Kotlinでは、通信エラーなどが発生したときに備えて、try-catchという仕組みを使います。

「try」は「試す」、「catch」は「捕まえる」という意味で、失敗してもエラー内容をキャッチして、安全に処理を続けることができます。

4. 実際のKotlinコードでAPIエラー処理を体験しよう

4. 実際のKotlinコードでAPIエラー処理を体験しよう
4. 実際のKotlinコードでAPIエラー処理を体験しよう

ここでは、OkHttpを使ってAPIにリクエストを送り、通信エラーやステータスコードによる失敗を処理する例を紹介します。


import okhttp3.OkHttpClient
import okhttp3.Request
import java.io.IOException

fun main() {
    val client = OkHttpClient()
    val request = Request.Builder()
        .url("https://api.example.com/data")
        .build()

    try {
        val response = client.newCall(request).execute()
        if (response.isSuccessful) {
            println("通信成功!レスポンス: ${'$'}{response.body?.string()}")
        } else {
            println("エラー発生: ステータスコード ${'$'}{response.code}")
        }
    } catch (e: IOException) {
        println("通信中にエラーが発生しました: ${'$'}{e.message}")
    }
}

このコードでは、ネットワークの失敗(たとえばオフラインなど)に対してIOExceptionを使って対処しています。

また、サーバーからの返答がエラー(たとえば404や500など)だった場合にも、response.isSuccessfulでチェックできます。

5. HTTPステータスコードとは?

5. HTTPステータスコードとは?
5. HTTPステータスコードとは?

APIと通信したとき、サーバーは「ステータスコード」と呼ばれる数字を返してくれます。これは、結果が成功だったのか失敗だったのかを示す番号です。

  • 200番台:成功(OK)
  • 400番台:リクエストエラー(例:404は「ページが見つからない」)
  • 500番台:サーバー側のエラー(例:503は「サービス利用不可」)

この番号を使って、エラーの種類を判断することができます。

6. 実行結果のイメージ

6. 実行結果のイメージ
6. 実行結果のイメージ

例えば、ネットワークが問題なければ次のような出力になります:


通信成功!レスポンス: {"message":"正常に取得されました"}

もしURLが間違っていたり、通信がうまくいかないときは、次のようなエラーメッセージが表示されます:


通信中にエラーが発生しました: api.example.com

7. よくあるエラーと対策

7. よくあるエラーと対策
7. よくあるエラーと対策

初心者の方がつまずきやすいエラーをいくつか紹介します。

  • MalformedURLException:URLの形式が間違っている。
  • UnknownHostException:サーバー名が存在しない。
  • SocketTimeoutException:サーバーからの返答が遅すぎてタイムアウト。

どれも「例外」として扱われ、try-catchで処理することができます。

8. エラー内容を詳しくログに出す

8. エラー内容を詳しくログに出す
8. エラー内容を詳しくログに出す

通信エラーが起きたとき、原因を知ることはとても重要です。e.messageだけでなく、e.printStackTrace()を使うと、より詳しいエラー情報が出力されます。


catch (e: IOException) {
    println("通信エラー:${'$'}{e.message}")
    e.printStackTrace()
}

開発中はログにしっかり出して、どんな問題が起きたかを確認する習慣をつけるのがポイントです。

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

9. ネットワーク通信の安定性を意識しよう

9. ネットワーク通信の安定性を意識しよう
9. ネットワーク通信の安定性を意識しよう

API通信は、ユーザーのネット環境に大きく左右されます。電波が弱かったり、地下にいたりすると、通信が失敗することもあります。

そのため、「失敗したらアプリが止まる」のではなく、「失敗してもやさしく通知する」ように設計することが大切です。

たとえば、「ネットワークに接続できませんでした。再試行してください」とメッセージを表示するような対応が理想です。

関連セミナーのご案内

【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分

「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。

本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。

具体的な体験内容と環境

【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。

【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。

この60分で得られる3つの体験

1. 自分のパソコンが「開発基地」に

プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。

2. プログラミングの「仕組み」がスッキリ

「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。

3. 「読みやすい」から「直せる」へ

Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。

※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。

セミナー画像

Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のスコープとは?ローカル変数・グローバル変数の違いと使い分け
New2
Go言語
Go言語の構文ルールまとめ!インデント・セミコロンなど最初に知っておくポイント
New3
Kotlin
KotlinのwithTimeoutでタイムアウト処理を設定しよう!初心者にもわかる非同期の安全な止め方
New4
Go言語
Go言語のマップの順序保証がない理由と扱い方の工夫をやさしく解説!初心者でもわかる基本知識
人気記事
No.1
Java&Spring記事人気No1
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Go言語
Swiftの配列(Array)の使い方を完全ガイド!初心者でもわかるデータのまとめ方
No.3
Java&Spring記事人気No3
Go言語
Go言語でREST APIを作る設計と実装パターン完全ガイド!初心者でもわかるAPI開発
No.4
Java&Spring記事人気No4
Kotlin
Kotlinのsettings.gradleファイルを完全解説!初心者でもわかるプロジェクト設定の基本
No.5
Java&Spring記事人気No5
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.6
Java&Spring記事人気No6
Go言語
Swiftの変数と定数の使い方を完全ガイド!初心者でもわかる基本文法
No.7
Java&Spring記事人気No7
Go言語
Go言語のトランザクション処理を完全解説!Begin・Commit・Rollbackを初心者向けにやさしく理解
No.8
Java&Spring記事人気No8
Go言語
Go言語のgo installコマンドの役割とインストール先の仕組みを徹底解説!