icon
icon

Pythonの例外処理の基本try, exceptの使い方を現役エンジニアが解説【初心者向け】

初心者向けにPythonの例外処理の基本try, exceptの使い方について現役エンジニアが解説しています。例外とはプログラムの実行を妨げるような異常に対して実行される処理のことです。Pythonではtry-except文を使用します。ゼロ除算例外(ZeroDivisionError)を例にしています。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Pythonの例外処理の基本try, exceptの使い方について解説します。

そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonの例外処理の基本try, exceptの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

例外処理とは

例外とはプログラムの実行を妨げるような異常のことです。例外処理とはそういった異常に対して実行される処理のことです。

一般に例外処理では、異常を回復するような処理や、回復できない場合はなるべく丁寧に(※)プログラムを終了するような処理を行います。

(※)突然異常終了するのではなく、原因や解決方法を示すエラーメッセージを表示するなど。
 

try, exceptとは

try-exceptはPythonにおける例外処理の仕組みです。
tryブロックの中に例外の発生しうる処理を記述します。

例外の発生した場合、tryブロックの処理は中断され、対となるexceptブロックに処理がジャンプします。
 

[PR] Pythonで挫折しない学習方法を動画で公開中

try, exceptの基本的な使い方

以下のようにtry-exceptを組にして用います。

tryブロックの中で例外ExceptionAが発生すると、exceptブロックにジャンプします。
ExceptionAはPythonに元々ある例外(KeyErrorやValueErrorなど)のこともあれば、独自に定義した例外(Exceptionを継承したクラス)のこともあります。

 

try:
  # 例外の発生しうる処理
except ExceptionA:
  # 例外Aに対する処理

 
以下のように複数の例外に対してexceptブロックを定義することもできます。

ExceptionAが発生すれば1つ目のexceptブロック、ExceptionBが発生すれば2つ目のexceptブロックにジャンプします。
 

try:
  # 例外の発生しうる処理
except ExceptionA:
  # 例外Aに対する処理
except ExceptionB:
  # 例外Bに対する処理

 

以下のように例外クラスを省略すると全ての例外を捕捉します。
 

try:
  # 例外の発生しうる処理
except:
  # 例外に対する処理

 

実際に試してみる

サンプルコード

def divide(x, y):
  try:
    print('%d/%d = %d' % (x, y, x/y))
  except ZeroDivisionError:
    print('ゼロ除算例外が発生しました。')

divide(6, 3)
divide(6, 0)

 

実行結果

6/3 = 2
ゼロ除算例外が発生しました。
 

解説

divideメソッドを定義しました。割り算の経過と結果を表示するメソッドです。divideの中にtry-exceptブロックがあります。ゼロ除算例外(ZeroDivisionError)が発生すると、exceptブロックにジャンプします。

(注)0での除算は結果が不定のため、Pythonでは例外が発生します。

最初に6÷3の計算を行いました。こちらは特に問題なく、計算経過と結果が表示されました。

次に6÷0の計算を行いました。ゼロ除算例外が発生したので、tryブロックは中断され、exceptブロックが実行されました。
 

監修してくれたメンター

橋本紘希

システムインテグレータ企業勤務のシステムエンジニア。

開発実績: Javaプログラムを用いた業務用Webアプリケーションや、基幹システム用バッチアプリケーションなどの設計構築試験。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。