カテゴリ: Go言語 更新日: 2025/12/10

Go言語の標準ライブラリのエラーハンドリング例を見て学ぼう!初心者でもわかるエラー処理の基本

Go言語の標準ライブラリのエラーハンドリング例を見て学ぼう
Go言語の標準ライブラリのエラーハンドリング例を見て学ぼう

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

生徒

「先生、Go言語の標準ライブラリってエラーが出たときにどうやって処理しているんですか?」

先生

「いい質問ですね。Go言語の標準ライブラリは、エラーをしっかり返して、それを呼び出す側で確認して処理する形を取っています。これをエラーハンドリングと言います。」

生徒

「エラーを返すってどういうことですか?ちょっとイメージがつかなくて…」

先生

「たとえば、コンビニで商品を買うとき、もし在庫がなければ『売り切れです』と言われますよね?プログラムでも同じで、処理がうまくいかないときは『これが問題です』と教えてくれる仕組みがあるんです。」

生徒

「なるほど。じゃあ、実際にどんな感じでエラーを扱うのか見せてもらえますか?」

先生

「もちろんです。標準ライブラリの代表的な例を見ながら、エラー処理の流れを理解しましょう!」

1. 標準ライブラリの関数はエラーを返す

1. 標準ライブラリの関数はエラーを返す
1. 標準ライブラリの関数はエラーを返す

Go言語の標準ライブラリにある関数は、多くの場合エラーを返すことがあります。エラーがなければnil(「何もない」という意味)を返し、何か問題があればエラー情報を返します。

例えば、ファイルを開くときのos.Open()関数です。この関数は、成功すればファイル情報を返し、失敗するとエラーを返します。


file, err := os.Open("example.txt")
if err != nil {
    // エラーがあった場合の処理
    fmt.Println("ファイルを開けませんでした:", err)
    return
}
// ファイル操作の処理を続ける
defer file.Close()
fmt.Println("ファイルを正常に開きました")

このコードのポイントは、os.Open()の戻り値として、file(ファイル情報)とerr(エラー情報)を受け取っていることです。

2. エラーの有無を確認する仕組み

2. エラーの有無を確認する仕組み
2. エラーの有無を確認する仕組み

errerror型で、エラーがなければnilになります。なので、if err != nilという条件で「エラーがあるかどうか」を判定できます。

この判定がとても重要で、プログラムが問題なく動いているかを判断する目安になります。

たとえば、ファイルが存在しない場合はエラーが返り、それをキャッチしてエラー内容を表示します。

3. エラー内容を詳しく知る方法

3. エラー内容を詳しく知る方法
3. エラー内容を詳しく知る方法

返ってきたエラーは、そのまま文字列として表示できます。fmt.Println(err)と書くだけで、何が問題だったかがわかります。

例えば、ファイルがない場合は「no such file or directory(そのようなファイルやディレクトリはありません)」というエラーメッセージが表示されます。

Go言語を基礎からスッキリ学びたい人や、 文法だけでなく「実用的な使い方」まで押さえたい人には、 定番の入門書がこちらです。

基礎からわかるGo言語をAmazonで見る

※ Amazon広告リンク

4. 標準ライブラリでよく使うエラーハンドリングの例

4. 標準ライブラリでよく使うエラーハンドリングの例
4. 標準ライブラリでよく使うエラーハンドリングの例

ここでは、ファイル読み込みの例をもう少し詳しく見てみましょう。ファイルを読み込んで内容を表示する処理で、エラー処理をどう書くか紹介します。


import (
    "fmt"
    "io/ioutil"
    "os"
)

func main() {
    data, err := ioutil.ReadFile("sample.txt")
    if err != nil {
        fmt.Println("ファイル読み込みでエラーが発生しました:", err)
        return
    }
    fmt.Println("ファイル内容:")
    fmt.Println(string(data))
}

この例では、ioutil.ReadFile()関数がファイルの内容を読み込みます。エラーがあれば処理を止めて、エラー内容を表示します。

5. エラーが起きたらどうする?

5. エラーが起きたらどうする?
5. エラーが起きたらどうする?

プログラムではエラーが起きたらすぐに気づくことが大切です。だから、標準ライブラリの関数はエラーを返して呼び出し側に知らせます。

呼び出す側はif err != nilでチェックして、問題に応じて処理を分けるのが基本です。エラーを無視するとプログラムが変な動きをする原因になります。

6. 覚えておきたいポイント

6. 覚えておきたいポイント
6. 覚えておきたいポイント

Go言語の標準ライブラリでは、エラーは必ずチェックするように設計されています。これはプログラムの安全性と信頼性を高めるためです。

標準ライブラリの関数を使うときは、返り値のエラーを確認し、もしエラーがあれば適切に対応しましょう。これが「エラーハンドリング」の基本です。

まとめ

まとめ
まとめ

標準ライブラリから学ぶエラーハンドリングの大切さ

今回の記事では、Go言語の標準ライブラリがどのようにエラーを返し、呼び出し側がそのエラーを確認して処理を進める仕組みを解説しました。標準ライブラリの実例は、Go言語のエラーハンドリングの考え方がそのまま現れているため、初心者が理解を深めるうえで非常に役立ちます。特に、os.Openioutil.ReadFile(現在は os.ReadFile へ移行)といった関数が常にエラーを返すよう設計されている点は、Go言語の哲学を象徴しています。 エラーを返すというシンプルな仕組みですが、これによって「成功したか失敗したか」が常に明確で、呼び出す側もエラーを確認する習慣が自然と身につきます。エラーを無視して処理を続けると、後で原因不明の不具合につながるため、初心者の段階から「返ってきたエラーは必ずチェックする」という意識を持つことが大切です。

また、標準ライブラリのエラーメッセージは非常に具体的で、問題の原因がそのまま文字で示されます。例えばファイルが存在しない場合には「no such file or directory」など、状況に応じたメッセージが返されます。初心者にとっては、これだけでもデバッグがとても進めやすくなります。こうしたメッセージをしっかり受け取り、適切な対応をすることが、自分のプログラムを安全で扱いやすいものにする第一歩です。

標準ライブラリを使った簡単なエラー確認サンプル

ここでは、標準ライブラリの挙動を理解するためのシンプルな例を紹介します。ファイルを開く処理はエラーの発生がとてもわかりやすく、練習に最適です。


package main

import (
    "fmt"
    "os"
)

func main() {
    file, err := os.Open("not_found.txt")
    if err != nil {
        fmt.Println("ファイルが開けませんでした:", err)
        return
    }

    defer file.Close()
    fmt.Println("ファイルを正常に開きました")
}

初心者にありがちな失敗として「エラーが返ってきても無視してしまう」というものがあります。しかし、標準ライブラリの関数から返るエラーを確認すると、何が起きたのかが一目で分かり、プログラムの進行が安全になります。エラー処理を正しく行うだけで、プログラム全体の信頼性がぐっと高まります。

エラーを読み取り、次の処理を安全に進める習慣をつけよう

標準ライブラリから学べる最も大切なポイントは、「エラーは必ず返ってくる可能性がある」という前提で処理を書くことです。特にファイル操作、ネットワーク通信、データ読み書きなどは失敗しやすいため、必ず if err != nil でチェックし、安全に処理を分けることが求められます。 エラーが発生した場合は、すぐに処理を止めるのか、それとも別の対応をするのかを決める必要があります。この考え方を繰り返し練習すると、初心者でも「安全で読みやすいコード」を自然と書けるようになります。

標準ライブラリの挙動になじむことで、Go言語全体のエラーハンドリング設計が見えやすくなり、どんなパッケージでも迷わずエラー処理ができるようになります。これから本格的にGoを学ぶ人にとって、標準ライブラリは最良の教材でもあるのです。

先生と生徒の振り返り会話

生徒

「標準ライブラリの例を見るだけで、Goのエラー処理の仕組みがすごく分かりやすくなりました。毎回エラーを返すのにはちゃんと理由があるんですね!」

先生

「その気づきはとても大切ですよ。Goではエラーを返すことで、呼び出し側が安全に判断できるようになっています。標準ライブラリに沿って書けば、自然と良いコードになります。」

生徒

「エラーメッセージも具体的だからデバッグしやすいですね。最初はむずかしそうと思ったけど、仕組みを知ったら安心できました。」

先生

「そうでしょう。これからコードを書くときも、標準ライブラリのパターンにならって、エラーをきちんと確認しながら書けば、失敗に強いプログラムが作れますよ。」

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語の短絡評価(ショートサーキット)を使った条件式の工夫をやさしく解説!初心者でも理解できる基本知識
New2
Go言語
Go言語の構造体の初期化パターンとコンストラクタ的関数の書き方を徹底解説!初心者でもわかる基本と実用例
New3
Kotlin
Kotlinの例外処理とキャンセルの連携を完全ガイド!初心者でもわかるCoroutineExceptionHandlerの使い方
New4
Go言語
Go言語のクロージャとは?関数内関数の活用例と仕組み
人気記事
No.1
Java&Spring記事人気No1
Kotlin
KotlinのChannelでデータをやり取りする方法を完全ガイド!初心者にもわかる非同期通信の基本
No.2
Java&Spring記事人気No2
Go言語
Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
No.3
Java&Spring記事人気No3
Kotlin
Kotlinのビルド設定エラーと解決法まとめ!初心者向けGradleトラブル対処ガイド
No.4
Java&Spring記事人気No4
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.7
Java&Spring記事人気No7
Kotlin
Kotlin DSLとGroovy DSLの違いをやさしく解説!初心者でもわかるGradleスクリプトの使い分け
No.8
Java&Spring記事人気No8
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方

💻 作業効率アップに

ノートPCを縦置きしてデスクを広く。
省スペースで片づく定番スタンド

UGREEN 縦型スタンドをAmazonで見る

※ Amazon広告リンク