Errors を握りつぶさない
例外を捕まえて、ログに記録するだけで処理を続けるコードを、「Errors should never pass silently.」の観点で評価したとき、最も適切なものを1つ選べ。
- A
ログに書いてあれば、誰かが見るので、失敗は十分に伝わっている。
- B
ログに記録すれば、必ず問題がないので、呼び出し側は何も知らなくてよい。
- C
ログに記録しても、呼び出し側が失敗を検知できないなら、実質的には黙って通過しているので、失敗を呼び出し側に伝える設計にする。
- D
エラーは、何もしないことが最善である。
正解と解説を見る
正解:C
例外の握りつぶしに加え、「ログだけ出して続行する」も、呼び出し側から見ると黙ったままになる。失敗を伝える方法(再送出・結果・状態)を設計する。
| 格言 | 意味 |
|---|---|
| Beautiful is better than ugly. | 美しい方が、醜いよりよい |
| Explicit is better than implicit. | 明示的な方が、暗黙的よりよい |
| Simple is better than complex. | 単純な方が、複雑よりよい |
| Complex is better than complicated. | 複雑でも、ごちゃごちゃ(complicated)よりはよい |
| Flat is better than nested. | 平らな方が、入れ子より(深い入れ子より)よい |
| Sparse is better than dense. | ゆとりのある方が、詰め込みよりよい |
| Readability counts. | 読みやすさは大事 |
| Special cases aren't special enough to break the rules. | 特別な場合でも、規則を破るほど特別ではない |
| Although practicality beats purity. | ただし、実用性は純粋さに勝る |
| Errors should never pass silently. | エラーを黙って見過ごしてはいけない |
| Unless explicitly silenced. | 明示的に黙らせた場合は別 |
| In the face of ambiguity, refuse the temptation to guess. | あいまいなときは、推測したくなる誘惑を断る |
| There should be one-- and preferably only one --obvious way to do it. | 明白なやり方が1つ、できればただ1つだけあるべき |
| Although that way may not be obvious at first unless you're Dutch. | その方法は、オランダ人でなければ最初は分かりにくいかもしれない |
| Now is better than never. | やらないよりは、今やる方がよい |
| Although never is often better than *right* now. | ただし、「今すぐ」よりやらない方がよいことも多い |
| If the implementation is hard to explain, it's a bad idea. | 実装を説明しにくいなら、悪い考え |
| If the implementation is easy to explain, it may be a good idea. | 実装を説明しやすいなら、よい考えかもしれない |
| Namespaces are one honking great idea -- let's do more of those! | 名前空間は素晴らしい考え。もっと活用しよう |
- A
誤り。気づかれないことが多い。
- B
誤り。結果が誤っていても気づかない。
- C
正しい。必要なら再送出するか、失敗を示す結果を返す。
- D
誤り。エラーは扱う必要がある。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。