Pythonのtry/exceptでエラーも怖くない!Java経験者向けにわかりやすく解説

こんにちは。ゆうせいです。

今回は Pythonの例外処理(try / except を、Javaを学んだばかりの新人エンジニアの方に向けて、わかりやすく説明していきます。

Javaに慣れていると「Pythonってゆるすぎない?」と思うかもしれませんが、例外処理については共通点も多く、違いを理解すればすぐに使いこなせるようになります!


PythonとJavaの例外処理の基本構文の違い

Javaの基本的な例外処理

try {
    // エラーが起きそうな処理
} catch (IOException e) {
    // エラー処理
} finally {
    // 必ず実行される処理
}

Javaではtryの後にcatchで特定の例外を受け取り、必要があればfinallyで後処理しますよね。


Pythonの基本的な例外処理

try:
    # エラーが起きそうな処理
except IOError as e:
    # エラー処理
finally:
    # 必ず実行される処理

どうでしょう?構造はほぼ同じです。tryexceptfinally という流れで、Java経験者には馴染みやすい構文ですね。

ただし、Pythonではすべての例外が「Exception」という1つのクラスを基底にしている点に注意してください。

なぜ、exceptなのか?

Pythonで例外処理に使われる「except」は、「例外的な状況を除外する(except)」という意味から来ています。英語では「すべて〇〇、ただし××を除く」という文で使われる単語で、プログラム中でも「通常の処理の流れから外れる特別なケース」を扱う部分にふさわしい言葉です。

Pythonではtryで通常の処理を試し、何か問題が起こった場合にexceptでその「例外的な状況」を受け止めて対処する流れになります。


JavaとPythonの例外処理の違い

比較項目JavaPython
例外の指定catch (IOException e) のように明示的に型を書くexcept IOError as e のように書くが、型指定は任意
チェック例外あり(コンパイルエラーになる)なし(すべて実行時例外)
finally句ありあり(構文も同じ)
マルチキャッチ`catch (IOExceptionSQLException e)`

実際にコードを書いてみよう!

ファイルを開く例(Java風とPython風)

Javaの例:

try {
    FileReader reader = new FileReader("data.txt");
} catch (FileNotFoundException e) {
    System.out.println("ファイルが見つかりません!");
}

Pythonで同じ処理:

try:
    with open("data.txt", "r") as f:
        data = f.read()
except FileNotFoundError as e:
    print("ファイルが見つかりません!")

補足:with文って何?

Pythonには with 文という構文があります。これは「リソースを自動で開閉する仕組み」で、Javaでいう try-with-resources に近いです。


例外を投げる方法(Javaのthrowに相当)

Javaの場合:

throw new IllegalArgumentException("引数が不正です");

Pythonではこう書きます:

raise ValueError("引数が不正です")

Pythonでは raise を使って例外を明示的に発生させることができます。


finally句で後処理も安心!

ファイルを開いたあと、必ず閉じたいときなどに使う finally 句。Javaと同じように使えます。

try:
    f = open("sample.txt", "r")
    data = f.read()
except FileNotFoundError:
    print("ファイルが存在しません")
finally:
    f.close()

このように、たとえ try の中でエラーが出ても、finally の中の処理は必ず実行されます。


まとめ:Pythonの例外処理は自由だけど強力!

Pythonのtry / except文は、Javaと似ている点が多く、構文も直感的です。ただし、いくつかの特徴を理解しておくと安心です。

メリット

  • 構文がシンプルで読みやすい
  • with 文や except の柔軟さでコードがすっきり
  • 例外の型を明示しなくても動作する(初心者にはありがたい)

デメリット

  • チェック例外がないため、ミスが実行時まで気づかないことも
  • 例外の範囲が広すぎるとバグに気づきにくくなる

今後の学習のポイント

  • Pythonの例外階層ExceptionBaseException など)を確認してみましょう。
  • else句やraise fromによる例外の連鎖も学んでおくと、より実践的に使えます。
  • いろいろな例外(TypeError, ValueError, ZeroDivisionErrorなど)を試しながら、慣れていくのが近道です!

次は、「独自の例外クラスを作ってみよう」や「with文の仕組みを深堀り」なんかも面白いですよ。

気になるテーマがあれば、どんどん聞いてくださいね!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。