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

PythonでIOError例外をキャッチする方法【初心者向けにわかりやすく解説】

IOError例外とは?

IOError(入出力エラー)は、入出力操作が失敗したときに発生する例外です。代表的な例としては、存在しないファイルをopen()関数で開こうとした場合や、OSに関連するエラーが発生した場合などが挙げられます。

なお、Python 3ではIOErrorはOSErrorの別名(エイリアス)となっており、どちらの名前で捕捉しても同じ例外を受け取ることができます。

try-exceptブロックで例外を処理する

ファイルを開く処理などをtryブロック内に記述すると、入出力例外が発生した際にexceptブロックで適切に処理できます。以下に具体的なコード例を示します。

コード例(Python 3)

import sys

def whatever():
    try:
        f = open("foo.txt", "r")
    except IOError as e:
        print(e)
        print(type(e).__name__)

whatever()

実行結果

[Errno 2] No such file or directory: 'foo.txt'
IOError

この例では、カレントディレクトリに「foo.txt」というファイルが存在しないため、open()関数がIOErrorを発生させます。その例外はexcept IOError as e:によって捕捉され、エラーメッセージと例外の種類が出力されます。

補足:Python 2とPython 3の違い

古いPython 2のコードでは、例外の捕捉をexcept IOError, e:という構文で記述していましたが、Python 3ではこの書き方は使えません。必ずasキーワードを使ったexcept IOError as e:の形式を使用してください。

また、より汎用的にOS関連のエラー全般を捕捉したい場合は、except OSError as e:と記述するのが現代的なベストプラクティスです。

  1. 【Python入門】ArithmeticError例外のキャッチ方法をわかりやすく解説

    ArithmeticErrorは、数値計算に関連するエラーすべての基底クラス(親クラス)となる組み込み例外です。具体的には、以下のような例外クラスがこのArithmeticErrorを継承しています。 OverflowError:演算結果が表現可能な範囲を超えた場合に発生 ZeroDivisionError:0による除算や剰余演算を行った場合に発生 FloatingPointError:浮動小数点演算で異常が発生した場合に発生 そのため、except句でArithmeticErrorを指定すれば、これらの個別の例外クラスを一つひとつ指定しなくても、数値計算関連の例外をまとめて捕捉することが

  2. PythonでKeyError例外をキャッチする方法をわかりやすく解説

    Pythonでは、辞書(dict)に存在しないキーを使って値へアクセスしようとすると、KeyError例外が発生します。この記事では、try-except文を使ってKeyErrorをキャッチし、例外の種類や詳細情報を確認する方法を解説します。 KeyErrorが発生する仕組み 次のコードは、辞書に存在しないキー c で値を取得しようとしているため、KeyErrorが発生します。sys.exc_info() を使うと、発生した例外の型などの情報を取得できます。 import sys try: s = {a: 5, b: 7}[c] except: print(sys.exc_i