AI資格ドリル
資格を選ぶ↓

Python3エンジニア認定基礎試験 第8章 エラーと例外 予想問題と解説

Python3エンジニア認定基礎試験「第8章 エラーと例外」の予想問題を19問収録しています。各問を解説つきで掲載し、全問は演習画面で解けます。出題は公式シラバスの範囲内です。

この章の要点

例外処理の構造、構文エラーと例外、クリーンアップ動作、例外の送出と定義などを扱う分野です。全19問(基礎4問・標準14問・応用1問)を収録しています。

  • 例外処理の構造
  • 構文エラーと例外
  • クリーンアップ動作
  • 例外の送出と定義

情報源と編集区分

公式範囲を確認し、問題数・難易度・確認点は当サイトが集計・編集。 一次情報確認日: 2026-09-18。

試験概要(公式)

確認しておきたいポイント

当サイトの作問時に観察した、取り違えやすい論点です(公式の統計ではありません)。

  • finally と except と else の役割の混同。finally は例外の有無にかかわらず必ず実行され、except は一致する例外が起きたとき、else は例外が起きなかったときに実行される。
  • else 節を置く位置。すべての except 節よりも後ろに置く必要がある。
  • 複数の except 節があるとき、最初に一致した節だけが実行されること。
  • 構文エラーと例外の取り違え。構文エラーは構文解析の段階で検出される。公式チュートリアルは例外について「たとえ文や式が構文的に正しくても、実行しようとしたときにエラーが発生するかもしれません。実行中に検出されたエラーは例外と呼ばれ、常に致命的とは限りません」と述べている。try 文で受けられるのは後者だけである。

この章の関連用語

この分野の問題で扱う用語です。意味があいまいなものは、用語集で定義を確認できます。

この章に関連する比較記事

混同しやすい2つの概念を並べて整理した記事です。

よくある質問

Q第8章 エラーと例外は何問収録されていますか?

A

現在19問を収録しています。内訳は基礎4問・標準14問・応用1問です。

Q第8章 エラーと例外の頻出論点は何ですか?

A

例外処理の構造、構文エラーと例外、クリーンアップ動作、例外の送出と定義などが出題対象です(当サイト収録問題に基づく編集部集計)。

Q間違えた問題はどう復習すればいいですか?

A

誤答した選択肢のどこがずれていたかを解説で確認し、関連用語がある場合は用語集で定義に戻ってから再演習することをおすすめします。

第1問 ・ 例外処理の構造

try 文の finally 節の性質として正しいものはどれか。

  • ア例外が発生したかどうかにかかわらず、必ず実行される
  • イ例外が発生したときだけ実行される
  • ウ例外が発生しなかったときだけ実行される
  • エexcept 節が1つも書かれていないときだけ実行される
答えと解説を見る
ア例外が発生したかどうかにかかわらず、必ず実行される正解
解説

正解は「例外が発生したかどうかにかかわらず、必ず実行される」である。finally 節は後片づけのための節で、try の中で例外が起きた場合も起きなかった場合も実行される。例外が発生したときだけ実行されるのは except 節で、finally とは役割が違う。例外が発生しなかったときだけ実行されるのは else 節である。except 節の有無によって finally の実行が変わることもない。try・except・else節のいずれかで例外が発生した場合は、finally節が実行された後にその例外が再送出される。また、try節の中で break・continue・return文に達した場合も、その実行の直前に finally節が実行される。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 第8章 エラーと例外、2026-09-11確認)

問題番号: py3b-009
問題番号 py3b-009 の誤りを報告する
第2問 ・ 構文エラーと例外

構文エラーと例外の違いとして正しいものはどれか。

  • ア構文エラーは解析の時点で検出され、例外は実行中に発生する
  • イ構文エラーは実行中に発生し、例外は解析の時点で検出される
  • ウどちらも実行中に発生するが、構文エラーだけ try で捕まえられる
  • エどちらも解析の時点で検出されるが、例外だけ警告にとどまる
答えと解説を見る
ア構文エラーは解析の時点で検出され、例外は実行中に発生する正解
解説

正解は「構文エラーは解析の時点で検出され、例外は実行中に発生する」である。構文エラーは書き方そのものが文法に合っていない場合に解析の段階で検出されるため、プログラムは実行されない。例外は文法としては正しいプログラムを実行している途中で起きるもので、try 文で捕まえて処理できる。この違いを見分ける手順は、まずエラーがいつ検出されたか、解析の時点か実行中かを確かめ、解析の時点であれば構文エラー、実行中であれば例外だと判断することである。構文エラーは実行前に検出されるため try で捕まえる対象にはならない。どちらも解析の時点で検出されるわけでもなく、例外が警告にとどまるわけでもない。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 第8章 エラーと例外、2026-09-11確認)

問題番号: py3b-029
問題番号 py3b-029 の誤りを報告する
第3問 ・ 例外処理の構造

try 文に except 節が複数あるとき、実行される節の数はどれか。

  • ア一致したすべての節が上から順に実行される
  • イ最初に一致した節だけが実行される
  • ウ最後に一致した節だけが実行される
  • エ一致の有無にかかわらずすべての節が実行される
答えと解説を見る
イ最初に一致した節だけが実行される正解
解説

正解は「最初に一致した節だけが実行される」である。公式チュートリアルは、except 節は try 節内で例外が発生し、その例外型が except 節で指定された例外に一致する場合に実行されると説明しており、複数の except 節がある場合は最初に一致した節だけが実行されると述べている。そのため節を並べる順序が意味を持ち、広い範囲の例外を受ける節を先に置くと、後ろにある狭い範囲の節へ処理が到達しなくなる。一致したすべての節が実行されるわけではなく、最後に一致した節が選ばれるわけでもない。一致の有無にかかわらず実行されるのは finally 節であり、except 節とは性質が異なる。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 第8章 エラーと例外、2026-09-11確認)

問題番号: py3b-031
問題番号 py3b-031 の誤りを報告する
第4問 ・ 例外処理の構造

try 文の else 節を置く位置として正しいものはどれか。

  • アtry 節のすぐ後ろで、except 節より前
  • イすべての except 節よりも後ろ
  • ウfinally 節よりも後ろ
  • エtry 文の外側
答えと解説を見る
イすべての except 節よりも後ろ正解
解説

正解は「すべての except 節よりも後ろ」である。公式チュートリアルは、else 節は try 節で全く例外が送出されなかったときに実行される節であり、すべての except 節よりも後ろに置く必要があると説明している。except 節より前に置くことはできず、try・except・else という順序が定められている。finally 節はさらにその後ろに置かれる節であり、else 節を finally 節より後ろに置くものでもない。また else 節は try 文を構成する一部であり、try 文の外側に独立して書けるものでもない。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 第8章 エラーと例外、2026-09-11確認)

問題番号: py3b-032
問題番号 py3b-032 の誤りを報告する
第5問 ・ クリーンアップ動作

try 節の中で return に達したとき、finally 節はどうなるか。

  • アreturn が実行されるため finally 節は飛ばされる
  • イreturn の値が返されたあとに finally 節が実行される
  • ウreturn を実行する直前に finally 節が実行される
  • エreturn がある場合は finally 節を書けない
答えと解説を見る
ウreturn を実行する直前に finally 節が実行される正解
解説

正解は「return を実行する直前に finally 節が実行される」である。設問が問うのは、try 節の中で return に達したときに finally 節がいつ、どのように動くかという実行順序である。公式チュートリアルはこの順序を、break・continue・return に達した場合はその直前に finally 節が動くと説明しており、飛ばされることも省略されることもない。値を返し終えたあとに動くのでもなく、finally 節自体を書けなくなる制限も存在しない。後片づけのための節という性質上、return の有無にかかわらず必ず実行される点が判断の軸になる。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 第8章 エラーと例外、2026-09-11確認)

問題番号: py3b-033
問題番号 py3b-033 の誤りを報告する
第6問 ・ 例外の送出と定義

独自にエラーの種類を表したいとき、Pythonの例外のしくみで用いる方法として正しいものはどれか。

  • ア例外は言語が用意した種類だけが使えるため、独自に定義することはできない
  • イraise文は例外を送出する専用の構文ではなく、print文の別名にすぎない
  • ウ独自のエラーは例外の外側で、戻り値の数値だけを使って表す必要がある
  • エ独自の例外クラスを定義し、raise文でそのインスタンスを送出する
答えと解説を見る
エ独自の例外クラスを定義し、raise文でそのインスタンスを送出する正解
解説

正解は「独自の例外クラスを定義し、raise文でそのインスタンスを送出する」である。公式チュートリアルは例外の送出と定義について、raise文を使って例外を送出できること、そしてプログラム側で独自の例外(ユーザー定義例外)を定義できることを説明している。例外は言語が用意した種類しか使えないわけではなく、独自に定義して使うことができる。raise文はprint文の別名ではなく、例外を送出するための構文である。独自のエラーを戻り値の数値だけで表す必要もない。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 第8章 エラーと例外、2026-09-11確認)

問題番号: py3b-036
問題番号 py3b-036 の誤りを報告する
第7問 ・ 例外の送出と定義

raise文の引数に、インスタンスではなく例外クラスそのもの(例: raise ValueError)を渡したときの動作として正しいものはどれか。

  • ア例外クラスはraise文の引数に使えないため、構文エラーになる
  • イ例外は送出されず、例外クラスの名前だけが画面に表示される
  • ウ引数無しのコンストラクタが呼び出され、暗黙的にインスタンス化されて送出される
  • エ直前に処理された例外がそのまま再送出される
答えと解説を見る
ウ引数無しのコンストラクタが呼び出され、暗黙的にインスタンス化されて送出される正解
解説

正解は「引数無しのコンストラクタが呼び出され、暗黙的にインスタンス化されて送出される」である。公式チュートリアルによると、raiseの唯一の引数は送出される例外で、例外インスタンスか例外クラス(BaseExceptionを継承したクラス)でなければならない。例外クラスが渡された場合は引数無しのコンストラクタが呼び出され、暗黙的にインスタンス化される。raise ValueError は raise ValueError() の省略記法として紹介されている。直前の例外を再送出するのは、except節の中で引数を付けずに書く単純な形式のraise文である。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 8.4 例外を送出する、2026-09-27確認)

問題番号: py3b-114
問題番号 py3b-114 の誤りを報告する
第8問 ・ 例外の送出と定義

except節の中で別の例外を送出するとき、raise文に付ける from 句の説明として正しいものはどれか。

  • アraise RuntimeError from exc は、新しい例外が例外excから直接影響されていることを示し、from None は自動的な例外の連鎖を無効にする
  • イfrom 句を付けると、送出した例外は呼び出し元へ伝わらずにその場で握りつぶされる
  • ウfrom 句は例外を送出するモジュール名を指定する構文で、import文と同じ意味を持つ
  • エfrom None を指定すると、直前に処理された例外がもう一度送出される
答えと解説を見る
アraise RuntimeError from exc は、新しい例外が例外excから直接影響されていることを示し、from None は自動的な例外の連鎖を無効にする正解
解説

正解は「raise RuntimeError from exc は、新しい例外が例外excから直接影響されていることを示し、from None は自動的な例外の連鎖を無効にする」である。公式チュートリアルの「例外の連鎖」の節によると、except節の中で未処理の例外が発生した場合、その例外は処理された例外のエラーメッセージに含まれる。ある例外が他の例外から直接影響されていることを示すにはraise文にオプションのfrom句を指定し、例外を変換するときに便利だとされている。自動的な例外の連鎖を無効にするには from None を指定する。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 8.5 例外の連鎖、2026-09-27確認)

問題番号: py3b-115
問題番号 py3b-115 の誤りを報告する
第9問 ・ クリーンアップ動作

ファイルを with open("myfile.txt") as f: の形で開いて各行を処理したとき、公式チュートリアルが説明する動作として正しいものはどれか。

  • アwith文を使っても、ファイルはプログラムが終了するまで開いたままになる
  • イ行の処理中に問題が起きた場合は、ファイルfはcloseされずに残る
  • ウwith文を使うと例外が発生しなくなるため、try文を書く必要がなくなる
  • エ文の実行後は、たとえ行の処理中に問題があってもファイルfは常にcloseされる
答えと解説を見る
エ文の実行後は、たとえ行の処理中に問題があってもファイルfは常にcloseされる正解
解説

正解は「文の実行後は、たとえ行の処理中に問題があってもファイルfは常にcloseされる」である。公式チュートリアルの「定義済みクリーンアップ処理」の節では、for line in open("myfile.txt") のように書くと、コードの実行が終わった後に不定の時間ファイルを開いたままになる問題を挙げている。with文はファイルのようなオブジェクトが常に、即座に正しくクリーンアップされることを保証し、with文の実行後は行の処理中に問題があってもファイルfは常にcloseされる。with文は例外の発生そのものを防ぐものではない。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 8.8 定義済みクリーンアップ処理、2026-09-27確認)

問題番号: py3b-116
問題番号 py3b-116 の誤りを報告する
第10問 ・ クリーンアップ動作

try節で発生した例外が、どのexcept節にも一致せず処理されなかった。finally節があり、その中にはbreak・continue・return文を含まないとき、その後の流れとして正しいものはどれか。

  • アfinally節は実行されず、例外がすぐに呼び出し元へ伝わる
  • イfinally節が実行された後に、その例外が再送出される
  • ウfinally節が実行されると例外は処理済みとなり、再送出されない
  • エelse節が代わりに実行され、例外は無視される
答えと解説を見る
イfinally節が実行された後に、その例外が再送出される正解
解説

正解は「finally節が実行された後に、その例外が再送出される」である。公式チュートリアルの「クリーンアップ動作を定義する」の節によると、finally節はクリーンアップ動作を定義するためのもので、どんな状況でも必ず実行される。try文の実行中に発生した例外がexcept節で処理されなければ、finally節が実行された後にその例外が再送出される。公式の例でも、文字列同士の割り算で発生したTypeErrorはexcept節で処理されず、finally節の実行後に再度送出されている。else節はtry節で例外が送出されなかったときに実行される節である。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 8.7 クリーンアップ動作を定義する、2026-09-27確認)

問題番号: py3b-117
問題番号 py3b-117 の誤りを報告する
第11問 ・ 例外の送出と定義

except節の中で、捕捉した例外を自分では処理せず、そのまま呼び出し側へ通したい。Python公式チュートリアルが紹介する書き方として正しいものはどれか。

  • アexcept節の中で raise Exception と書く
  • イexcept節の中で、引数を付けずに raise だけを書く
  • ウexcept節の中に pass だけを書く
  • エelse節の中に、捕捉した例外の型名を書く
答えと解説を見る
イexcept節の中で、引数を付けずに raise だけを書く正解
解説

正解は「except節の中で、引数を付けずに raise だけを書く」である。公式チュートリアルは、例外が発生したかどうかを判定したいだけで、その例外を処理するつもりがなければ、単純な形式の raise 文を使って例外を再送出させることができると説明している。公式の例では、except NameError: の中で「例外が通り過ぎました!」と表示した後に raise を書くと、元の NameError がトレースバックとともに送出される。raise Exception と書くと別の新しい例外を送出することになり、元の例外をそのまま通す書き方ではない。pass だけでは例外の処理が終わったことになり、呼び出し側へは伝わらない。else節は try 節で例外が送出されなかったときに実行される節であり、例外の再送出には使わない。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 8.4 例外を送出する 、2026-10-02確認)

問題番号: py3b-175
問題番号 py3b-175 の誤りを報告する
第12問 ・ 例外の送出と定義

次のコードで、open() が OSError を送出したときの説明として、公式チュートリアルの記述に基づき正しいものはどれか。 try: open('database.sqlite') except OSError: raise RuntimeError from None

  • アRuntimeError は送出されず、OSError がそのまま再送出される
  • イfrom None は、直前の例外が None のときだけ使える書き方である
  • ウRuntimeError も OSError も送出されず、プログラムは正常に終了する
  • エRuntimeError が送出され、元の OSError との自動的な例外の連鎖は無効になる
答えと解説を見る
エRuntimeError が送出され、元の OSError との自動的な例外の連鎖は無効になる正解
解説

正解は「RuntimeError が送出され、元の OSError との自動的な例外の連鎖は無効になる」である。公式チュートリアルは、except節の中で未処理の例外が発生すると、その例外は処理された例外のエラーメッセージに含まれる(例外の連鎖)と説明し、自動的な例外の連鎖を無効にするには from None を指定すると述べている。公式の例では、raise RuntimeError from None を実行した結果、トレースバックには RuntimeError だけが表示される。raise 文の from 句は、ある例外が他の例外から直接影響されていることを示すために使う書き方で、from None はその連鎖を付けない指定にあたる。例外が消えて正常終了するわけではなく、新しい RuntimeError は送出される。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 8.5 例外の連鎖 、2026-10-02確認)

問題番号: py3b-176
問題番号 py3b-176 の誤りを報告する
第13問 ・ 例外の送出と定義

独自の例外クラスを定義するときの説明として、Python公式チュートリアルの記述に基づき正しいものはどれか。

  • ア典型的には Exception クラスから直接または間接的に派生させ、名前は Error で終わるものが多い
  • イ必ず BaseException クラスから直接派生させなければならず、間接的な派生は認められない
  • ウクラス名は必ず Error で終わらせなければならず、そうしないと構文エラーになる
  • エ例外クラスは属性を一つも持てず、メッセージ以外の情報をハンドラへ渡せない
答えと解説を見る
ア典型的には Exception クラスから直接または間接的に派生させ、名前は Error で終わるものが多い正解
解説

正解は「典型的には Exception クラスから直接または間接的に派生させ、名前は Error で終わるものが多い」である。公式チュートリアル8.6は、新しい例外クラスを作成することで独自の例外を指定でき、例外は典型的に Exception クラスから直接または間接的に派生したものだと説明している。また、ほとんどの例外は標準の例外の名前付けと同様に Error で終わる名前で定義されていると述べている。これは多くの例で見られる慣習の説明であり、必須の規則ではない。さらに公式は、例外クラスでも普通のクラスができることは何でも定義でき、大抵はいくつかの属性だけを提供して、ハンドラがエラーに関する情報を取り出せるようにする程度にとどめると説明している。したがって属性を持てないという記述は誤りである。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 8.6 ユーザー定義例外 、2026-10-02確認)

問題番号: py3b-177
問題番号 py3b-177 の誤りを報告する
第14問 ・ クリーンアップ動作

次の関数を divide("2", "1") で呼び出したときの結果として、公式チュートリアルの記述に基づき正しいものはどれか。 def divide(x, y): try: result = x / y except ZeroDivisionError: print("division by zero!") else: print("result is", result) finally: print("executing finally clause")

  • アdivision by zero! と表示され、そのまま正常に終了する
  • イTypeError が送出され、finally節は実行されないまま異常終了する
  • ウexecuting finally clause と表示された後、TypeError が再び送出される
  • エresult is と表示された後、executing finally clause と表示されて正常に終了する
答えと解説を見る
ウexecuting finally clause と表示された後、TypeError が再び送出される正解
解説

正解は「executing finally clause と表示された後、TypeError が再び送出される」である。文字列同士の割り算 "2" / "1" は TypeError を発生させる。except節は ZeroDivisionError だけを対象としているので、この TypeError は処理されない。公式チュートリアルは、try文の実行中に発生した例外がexcept節で処理されなければ、finally節が実行された後にその例外が再送出されると説明している。公式の例でも、divide("2", "1") では executing finally clause が表示されてから TypeError のトレースバックが出力され、文字列で割り算をすることで発生した TypeError は except節で処理されていないので、finally節実行後に再度送出されていると述べている。finally節は例外の有無に関わらず実行されるため、実行されないという選択肢は誤りである。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 8.7 クリーンアップ動作を定義する 、2026-10-02確認)

問題番号: py3b-178
問題番号 py3b-178 の誤りを報告する
第15問 ・ 例外処理の構造

try文に except節・else節・finally節がそろっている。このうち else節の実行中に例外が発生したときの動作として、公式チュートリアルの記述に基づき正しいものはどれか。

  • アfinally節は実行されず、例外だけがそのまま再送出される
  • イfinally節が実行された後に、その例外が再送出される
  • ウ例外は破棄され、finally節の実行後に正常終了する
  • エelse節の中の例外は、すべて SyntaxError として扱われる
答えと解説を見る
イfinally節が実行された後に、その例外が再送出される正解
解説

正解は「finally節が実行された後に、その例外が再送出される」である。公式チュートリアルは、except節または else節の実行中に例外が発生することがあり得ると述べ、その場合も、finally節が実行された後に例外が再送出されると説明している。finally節は、try文が例外を発生させるか否かに関わらず実行される節であり、例外の発生場所が try節・except節・else節のどれであっても実行される。例外が破棄されて正常終了することはない。また、実行中に発生した例外は構文エラーではなく例外として扱われる。構文エラーは構文解析エラーのことであり、実行前に検出される種類のエラーである。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 8.7 クリーンアップ動作を定義する 、2026-10-02確認)

問題番号: py3b-179
問題番号 py3b-179 の誤りを報告する
第16問 ・ クリーンアップ動作

ネットワーク接続を使う処理で、処理が成功したか失敗したかにかかわらず、最後に必ず接続を閉じたい。公式チュートリアルが finally節について説明している使いどころとして正しいものはどれか。

  • ア処理が失敗して例外が発生したときだけ実行したいコードを書く
  • イ処理で例外が全く送出されなかったときだけ実行したいコードを書く
  • ウ処理で扱う例外の型を、より具体的なものに絞り込む
  • エファイルやネットワーク接続などの外部リソースを、利用が成功したかどうかにかかわらず解放する
答えと解説を見る
エファイルやネットワーク接続などの外部リソースを、利用が成功したかどうかにかかわらず解放する正解
解説

正解は「ファイルやネットワーク接続などの外部リソースを、利用が成功したかどうかにかかわらず解放する」である。公式チュートリアル8.7は、実世界のアプリケーションでは、finally節は(ファイルやネットワーク接続などの)外部リソースを、利用が成功したかどうかにかかわらず解放するために便利だと説明している。finally節は、try文が例外を発生させるか否かに関わらず実行される。例外が発生したときだけ実行したい処理は except節の役割で、例外が全く送出されなかったときだけ実行したい処理は else節の役割である。扱う例外の型を絞り込むのは except節に指定する例外の型であり、finally節ではない。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 8.7 クリーンアップ動作を定義する 、2026-10-02確認)

問題番号: py3b-180
問題番号 py3b-180 の誤りを報告する
第17問 ・ 例外処理の構造

次のコードを実行したとき、画面に表示される内容として、公式チュートリアルの記述に基づき正しいものはどれか。 try: try: int('abc') except TypeError: print('inner') except ValueError: print('outer')

  • アinner と表示される
  • イouter と表示される
  • ウinner と outer の両方が表示される
  • エ何も表示されず、エラーメッセージを出して実行が停止する
答えと解説を見る
イouter と表示される正解
解説

正解は「outer と表示される」である。int('abc') は ValueError を送出する。内側の except 節は TypeError を指定しているので一致せず、公式チュートリアルが述べるとおり、一致しない例外は try 文の外側に渡される。外側の try 文には ValueError を指定した except 節があるため、そこで処理されて outer が表示される。例外に対するハンドラがどこにもなければ、処理されない例外としてエラーメッセージを出して実行を停止する。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 第8章 エラーと例外 8.3 例外を処理する、2026-10-26確認)

問題番号: py3b-233
問題番号 py3b-233 の誤りを報告する
第18問 ・ 例外処理の構造

辞書 d からキー k の値を取り出すとき、キーが存在すると仮定して d[k] をそのまま実行し、KeyError が起きたら except 節で対処する書き方がある。この書き方を表す名前と特徴として、Python公式用語集の説明に合うものはどれか。

  • アLBYL。呼び出しや検索の前に事前条件を明示的に検査する書き方で、多くの if 文が特徴である
  • イLBYL。有効なキーが存在すると仮定し、誤りなら例外を捕捉する書き方で、多くの try 文と except 文が特徴である
  • ウEAFP。呼び出しや検索の前に事前条件を明示的に検査する書き方で、多くの if 文が特徴である
  • エEAFP。有効なキーが存在すると仮定し、仮定が誤りなら例外を捕捉する書き方で、多くの try 文と except 文が特徴である
答えと解説を見る
エEAFP。有効なキーが存在すると仮定し、仮定が誤りなら例外を捕捉する書き方で、多くの try 文と except 文が特徴である正解
解説

正解は「EAFP。有効なキーが存在すると仮定し、仮定が誤りなら例外を捕捉する書き方で、多くの try 文と except 文が特徴である」である。Python公式用語集は、EAFP(Easier to ask for forgiveness than permission)を、有効なキーや属性が存在すると仮定し、仮定が誤りなら例外を捕捉する書き方と説明している。対になる LBYL(Look before you leap)は、呼び出しや検索の前に事前条件を明示的に検査する書き方で、多くの if 文が特徴である。

https://docs.python.org/3/glossary.html (Python公式用語集 EAFP・LBYL の項、事実リスト syllabus-facts.json の第8章で2026-10-12に確認済み。公式チュートリアル 第8章 エラーと例外、2026-10-26確認)

問題番号: py3b-234
問題番号 py3b-234 の誤りを報告する
第19問 ・ 例外処理の構造

次のコードを実行したとき、画面に表示される内容として、公式チュートリアルの記述に基づき正しいものはどれか。 try: print('A') int('x') print('B') except ValueError: print('C') print('D')

  • アA、B、C、D が順に表示される
  • イA、C、D が順に表示される
  • ウA、C が表示され、D は表示されない
  • エA、D が表示され、C は表示されない
答えと解説を見る
イA、C、D が順に表示される正解
解説

正解は「A、C、D が順に表示される」である。公式チュートリアルによると、try 節の実行中に例外が起きると、残りの try 節は飛ばされる。そのため int('x') で ValueError が送出された時点で print('B') は実行されない。例外の型が except 節の指定と一致すれば、その except 節が実行され、そのあと try 文の後ろへ実行が進む。したがって C の後に D が表示される。この順序は、例外が起きた位置より後ろの文は実行されず、except 節の処理後は try 文の後ろから再開する、という流れで確認できる。

https://docs.python.org/ja/3/tutorial/errors.html (Python公式チュートリアル 第8章 エラーと例外 8.3 例外を処理する、2026-10-26確認)

問題番号: py3b-235
問題番号 py3b-235 の誤りを報告する

執筆: ミナト編集部(運営者情報を見る)