Python 模擬試験

Python基礎 模擬試験 第1回 問30・8章 エラーと例外(例外の送出)

例外の連鎖

次のコードの raise ... from exc の働きとして、最も適切なものを1つ選べ。

try:
    open("database.sqlite")
except OSError as exc:
    raise RuntimeError("データベースを開けません") from exc
  1. A

    元の例外 OSError を、何もなかったことにして消す。

  2. B

    RuntimeError を発生させずに、処理を続ける。

  3. C

    元の例外を、そのまま再送出する。

  4. D

    新しい例外 RuntimeError を送出し、その直接の原因が OSError であることを示す(例外の連鎖)。

正解と解説を見る

正解:D

raise 新しい例外 from 元の例外 で、例外の原因を明示して連鎖させられる。

順実行する行実行後の変数
1`try:`—
2`open("database.sqlite")`—
3`except OSError as exc:`—
4`raise RuntimeError("データベースを開けません") from exc`—
分岐`except OSError as exc:`実行される
結果出力と例外例外 RuntimeError: データベースを開けません

学習のポイント:引数なしの raise(再送出)と、from を使った連鎖の違いを押さえる。

この問題を演習で解く →

問題一覧へ

このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。