Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの例外処理入門:try・exceptの基本とよく使われる例外の種類

Pythonで例外処理(エラーハンドリング)を行うには、まず「except」句を使って例外を捕捉する仕組みを理解する必要があります。

Pythonでは、例外をキャッチするために「try」と「except」というキーワードが用意されています。tryブロック内のコードは文ごとに順番に実行されますが、途中で例外が発生すると、残りのtryブロックのコードは実行されず、代わりにexcept節が実行される仕組みです。

基本的な構文

try:
    some_statements_here
except:
    exception_handling

シンプルな例

まずは非常に簡単な例で構文を確認してみましょう。

try:
    print("Hello, World!")
except:
    print("This is an error message!")

実行結果

Hello, World!

この例では例外が発生しないため、tryブロック内の処理がそのまま実行され、「Hello, World!」が出力されます。exceptブロックはスキップされます。

実際に例外が発生する例

次に、もう少し実践的な例を見てみましょう。リスト内の各要素に対して逆数を計算し、例外が発生した場合にそれを捕捉して処理を続行するプログラムです。

import sys
List = ['abc', 0, 2, 4]
for item in List:
    try:
        print("The List Item is", item)
        r = 1/int(item)
        break
    except:
        print("Oops!", sys.exc_info()[0], "occured.")
        print('\n')
        print("Next Item from the List is: ")
        print()
print("The reciprocal of", item, "is", r)

実行結果

The List Item is abc
Oops! <class 'ValueError'> occured.
Next Item from the List is:
The List Item is 0
Oops! <class 'ZeroDivisionError'> occured.
Next Item from the List is:
The List Item is 2
The reciprocal of 2 is 0.5

このプログラムでは、有効な逆数が計算できる整数が見つかるまでループが続きます。文字列「abc」はint()で変換できないためValueErrorが発生し、数値「0」はゼロ除算のためZeroDivisionErrorが発生します。例外を引き起こす可能性のあるコードはtryブロック内に配置され、例外が発生した場合はexceptブロックがそれを捕捉します。

sys.exc_info()[0]を使うことで、発生した例外の種類(クラス名)を取得して表示できる点もポイントです。

よく使われる主な例外の種類

Pythonにはさまざまな組み込み例外があります。ここでは特によく遭遇する代表的な例外を紹介します。

  • IOError

    ファイルを開けない場合など、入出力操作に失敗したときに発生します。

  • ImportError

    インポートしようとしたモジュールが見つからない(存在しない)場合に発生します。

  • ValueError

    引数の型は正しいのに、値が不適切な場合に発生します。例えば、int()に数値に変換できない文字列を渡したケースなどが該当します。

  • KeyboardInterrupt

    ユーザーが割り込みキー(一般的にはCtrl+C)を押したときに発生します。

  • EOFError

    input()などの組み込み関数が、データを一切読み込めないままファイル終端(EOF)に到達したときに発生します。

まとめ

例外処理を適切に使うことで、プログラムが予期しないエラーで強制終了するのを防ぎ、堅牢なコードを書くことができます。まずはtry・exceptの基本構造を理解し、実際にさまざまな例外を発生させて挙動を確認してみると良いでしょう。

  1. Pythonのリストをスタックとキューとして使う方法を徹底解説

    本記事では、Python 3.x(およびそれ以前のバージョン)におけるスタック(Stack)とキュー(Queue)という基本的なデータ構造について解説します。それぞれのデータ構造の仕組みや操作方法を、実際のコード例とともにわかりやすく学んでいきましょう。 本記事で扱う主なトピックは以下の通りです。 挿入操作(Push / Enqueue) 削除操作(Pop / Dequeue) 表示・走査(トラバース)操作 前提知識:リストとリスト操作の基礎関連するデータ構造:リスト操作 スタック(Stack)とは スタックでは、オブジェクトが積み重なるように格納され、取り出す際には到着した順序とは逆の順

  2. Pythonのtry・except・finally文を解説!例外処理の基本と使い方

    Pythonにおける例外処理では、try文とexcept文を使って、発生した例外(エラー)を捕捉し、適切に処理することができます。try節の中のコードは、上から順に1文ずつ実行されます。もし実行中に例外が発生すると、その時点でtryブロック内の残りの処理はスキップされ、代わりにexcept節が実行されます。基本的な例try: apple + 6except Exception: print(Cannot concatenate str and int objects)出力結果Cannot concatenate str and int objectsこのように、try〜except