複数の例外の処理
CoddyのPythonジャーニー「Logic & Flow」セクションの一部。レッスン 65/78。
Pythonでは、異なる種類の例外を個別のexceptブロックでHandleできます。これにより、発生した特定の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 ブロックの順序は重要です。より具体的な exceptions を、より一般的な exceptions より常に前に配置してください。
チャレンジ
簡単process_dataという名前の関数を作成してください。この関数は次の処理を行います:
- 潜在的なデータを表す string input を受け取る
- それを integer に convert し、次にその integer で 100 を divide する
- result を返す
- 少なくとも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 する)
- input を integer に convert できない場合の
自分で試してみよう
def process_data(input_string):
try:
# 入力文字列を整数に変換してみる
# 100を入力値で割る
# 結果を返す
except ValueError:
# 入力を整数に変換できない場合を処理する
except ZeroDivisionError:
# 入力がゼロの場合を処理する
except:
# その他の予期しない例外を処理する
return Noneこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Logic & Flowのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ