Kodrill

Python 3 エンジニア認定実践試験 / Python の言語仕様 ・ 無料問題 5/5

Python の言語仕様 問題5[例外処理と with 文]

次のコードを実行したときの出力を選んでください。

Python
class Resource:    def __enter__(self):        print("enter", end=" ")        return self​    def __exit__(self, exc_type, exc_value, traceback):        print("exit", end=" ")        return True​with Resource():    raise ValueError("error")print("after")

選択肢

  • A.enter exit after正解
  • B.enter exit
  • C.enter exit のあと ValueError で異常終了する
  • D.enter after exit

解説実行して確認済み

with 文のブロックを抜けるときは、例外が起きても __exit__ が呼ばれます。__exit__ が真の値を返すと、ブロック内で起きた例外は握りつぶされ、with 文の次から処理が続きます。そのため enter → exit と出力したあと、例外は外に伝わらず after も出力されます。

この問題の答えは、試験の対象バージョンでコードを実際に実行して確かめています。確かめ方は運営者情報に書いています。

「Python の言語仕様」の要点を解説記事で読む

「Python の言語仕様」の無料問題

ここで公開しているのは無料範囲の問題です。無料登録すると、解答の記録・ダッシュボードでの復習ができ、 プレミアムならこの問題セットの全問題と本番形式の模擬試験も解けます。