Menu
Coddy logo textTech

複数の例外の処理

CoddyのPythonジャーニー「ロジックとフロー」セクションの一部。レッスン 65/78。

Pythonでは、異なる種類のexceptionsを個別のexceptブロックで処理できます。これにより、発生する特定のerrorに応じて異なる対応ができます。

基本的な try-except 構造から始めます。

try:
    # 例外を発生させる可能性のあるコード
    pass
except Exception as e:
    # 任意の例外を処理する
    pass

複数の例外を処理するには、具体的な except ブロックを追加します。

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

1つの except ブロックで複数の例外型を捕捉することもできます。

try:
    # いくつかのコード
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

except ブロックの順序は重要です。常に、より具体的な例外をより一般的な例外より前に配置してください。

challenge icon

チャレンジ

簡単

process_dataという名前の関数を作成します。この関数は次の処理を行います:

  1. 潜在的なデータを表す string input を受け取る
  2. それを integer に convert し、その後その integer で 100 を divided する
  3. result を返す
  4. 少なくとも 3 つの可能性のある exceptions を処理する: 
    • input を integer に convert できない場合の ValueError("Input must be a number!" を print)
    • input が 0 の場合の ZeroDivisionError("Cannot divide by zero!" を print)
    • その他の exception に対する汎用ハンドラー("An unexpected error occurred!" を print)

自分で試してみよう

def process_data(input_string):
    try:
        # 入力文字列を整数に変換してみる
        
        # 入力値で100を割る
        
        # 結果を返す
        
    except ValueError:
        # 入力を整数に変換できない場合を処理する
        
    except ZeroDivisionError:
        # 入力がゼロの場合を処理する
        
    except:
        # その他の予期しない例外を処理する
        
    return None
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ