アルゴリズムとプログラミング
次の疑似コードを実行したとき、出力される文字列の順序として正しいものはどれか。 ``` try: print("A") raise Exception("エラー") print("B") catch(e): print("C") return finally: print("D") ```
ア.A → B → C → D
イ.A → D → C
ウ.A → C
エ.A → C → D正解
解説
finally ブロックは「どんなことがあっても最後に必ず実行される掃除係」。return で帰ろうとしても、例外が起きても、finally は必ず関数を出る前に割り込んで実行される。catch の中で print("C") した後 return しようとするが、その前に finally が D を出力する。
なぜ エ が正解か
実行順序を追う。①try ブロックに入り "A" を出力。②例外が発生し、"B" はスキップ(例外発生以降の try ブロックは実行されない)。③catch ブロックに移り "C" を出力。④catch 内に return があるが、finally ブロックは return が完了する前に必ず割り込んで実行されるため "D" を出力。⑤その後 return が完了しメソッドを抜ける。出力順序は A → C → D となる。
出典: AI生成問題(学習用)