本文へスキップ
BecomeCoder
ブログ一覧コース一覧

例外処理とは?初心者のための try / catch の使い方

#例外処理#try-catch#初心者

結論:例外処理とは「実行中に起きたエラーでプログラムが止まるのを防ぎ、代わりの対応をする」しくみです。書き方はどの言語もほぼ同じで、〈危ないコードを try で囲む → 起きた例外を catch(Python は except)で受け止める〉の2ステップだけ。まずはブラウザでそのまま動かして、止まるコードと止まらないコードを見比べるのが一番早いです。

「try catch って何?」「エラーと例外って違うの?」――プログラミングを始めると必ずぶつかる疑問です。この記事は、例外処理の考え方と try / catch の書き方だけに絞って説明します(エラーメッセージそのものの読み方は別記事にまとめてあるので、そちらへ送ります)。環境構築はいりません。出てくるコードはすべて Become-Coder のレッスンページでそのままブラウザ実行できます。無料・登録不要・日本語です。

そもそも「例外」とは?エラーとの違い

まず言葉を整理します。日常会話では「エラー」も「例外」も同じ意味で使われがちですが、プログラミングでは少しだけ役割が違います。

つまり例外処理が扱えるのは「実行中に起きる例外」です。文法ミス(そもそもプログラムが動き出せないエラー)は try / catch では防げません。ここは最初に混同しやすいポイントです。エラーメッセージの種類名の読み分け方は、別記事の エラーメッセージの読み方 で詳しく説明しているので、あわせて読むと理解が早まります。

try / catch の基本:危ない場所を囲んで受け止める

例外処理の骨格は、言語が違ってもほとんど同じ形です。

  1. try のブロックに「失敗するかもしれない処理」を書く。
  2. そこで例外が起きたら、続きを飛ばして catch(Python では except のブロックに処理が移る。
  3. catch で「代わりにどうするか」(メッセージを出す・初期値を使う・やり直す等)を書く。

例外が起きてもプログラム全体は止まらずcatch のあとの処理へ進めるのがポイントです。まずは実際に動かしてみましょう。

Python の try / except

Python では tryexcept を使います。「数字でない文字列を int() に渡すと ValueError で止まる」――このコードを try で囲むと、止まらずにメッセージを出せます。

詳しくは Python入門コースの「例外処理 ― エラーに備える」 を参照してください。ブラウザ上の実行ボタンでそのまま動かせるので、except の行を消したら本当に止まるのか、なども自分で試せます。

JavaScript の try / catch / throw

JavaScripttry / catch に加えて、自分から例外を起こす throw もセットで学べます。「0で割ろうとしたら自分で例外を投げ、それを catch で受け止める」という一連の流れを1つのコードで体験できます。

詳しくは JavaScript入門コースの「例外処理 ― try / catch / throw」 を参照してください。こちらもブラウザで実行できる回です。

Java / C# の try-catch

Java や C# のような型のはっきりした言語でも、書き方の骨格は同じ try / catch です。C# はとくに例外処理を1章まるごと扱っていて、その章のレッスンはすべてブラウザで実行できます。順番に動かすだけで、基本から設計まで身につきます。

いきなり全部を覚える必要はありません。最初は「44 → 45」だけでも、try / catch の感覚は十分つかめます。

どんな例外が起きる?種類を知っておくと catch しやすい

catchexcept)は、受け止めたい例外の種類を指定して書き分けられます。だから「どんな例外があるか」を知っておくほど、狙って受け止められるようになります。代表的なものを言語別に見ておきましょう。

これらは「1エラー=1ページ」でまとめた逆引きリファレンスの一部です。言語ごとの全体は Pythonのエラー逆引き / C#のエラー逆引き / Javaのエラー逆引き から一覧できます(こちらは読み物形式のリファレンスです)。

初心者がつまずきやすいところ

まとめ:まずは1つ、ブラウザで動かす

例外処理は「エラーで止まる → 止まらず対応する」への第一歩です。理屈より、try で囲む前と後で挙動がどう変わるかを目で見るのが一番わかります。使っている(使いたい)言語のレッスンを、いますぐブラウザで動かしてみてください。

次に読む

← ブログ一覧に戻る